不知道为什么转QDateTime失败

QDateTime dt = QDateTime::fromString("Thu, 18 May 2023 05:38:45 GMT", "ddd, dd MMM yyyy hh:mm:ss 'GMT'");
不知道为什么"Thu, 18 May 2023 05:38:45 GMT"字符串转QDateTime失败,有人知道为什么吗?

因为如果用QDateTime::fromString来解析的话,ddd和MMM这种需要符合你系统本地locale的表达,如果你是中文系统的话Thu和May就解析不了了,所以用QLocale::c().toDateTime("Thu, 18 May 2023 05:38:45 GMT", "ddd, dd MMM yyyy hh:mm:ss 'GMT'")就可以了,QLocale::c()是最简化的英语locale,可以解析英语的星期和月份

  • 你可以参考下这篇文章:QDateTime、QTime获取当前时间
  • 除此之外, 这篇博客: QDateTime类中的 三、使用案例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 
    //时间差
    QString begin = "2021-04-09 11:26:40";    
    QDateTime begin_time = QDateTime::fromString(begin, "yyyy-MM-dd hh:mm:ss");             
    QString end = "2021-05-01 11:26:40";    
    QDateTime end_time = QDateTime::fromString(end, "yyyy-MM-dd hh:mm:ss");  
    
    //转化 秒,天
    begin_time.secsTo(end_time)
    begin_time.daysTo(end_time)
     
    
    QString str = "2021-04-09 11:26:40";
    QDateTime begin_time = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss");
    QString str= begin_time .addDays(-1).toString("yyyy-MM-dd hh:mm:ss");
    
    
    
    //时间转化
    //将当前时间转化为时间戳 
    QDateTime begin_time = QDateTime::currentDateTime();//获取系统现在的时间
    uint stime = begin_time.toTime_t();