ZBLOG

E:\SvnCode\SSD_QC\ExtTransferService-QC\Trunk\src\main.cpp:144: error: C2440: “”: 无法从“initializer list”转换为“QDate” ..\src\main.cpp(144): error C2440: “”: 无法从“initializer list”转换为“QDate” ..\src\main.cpp(144)...

出现这个错误是因为在某些情况下,QDate 的构造函数不接受初始化列表的格式。在Qt中,你需要明确使用 QDate::fromString() 或直接通过提供年、月、日等参数来创建 QDate 对象。下面是修正后的代码:

#include <QCoreApplication>
#include <QDateTime>
#include <QString>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 输入的时间字符串(例如:2025-02-19_22_07_01_429)
    QString datetimeStr = "2025-02-19_22_07_01_429";

    // 使用split方法分割字符串
    QStringList parts = datetimeStr.split(QRegularExpression("[-_:]")); // 按照-、_、:分割

    // 检查分割后的部分数量是否正确
    if (parts.size() != 7) {
        qDebug() << "时间字符串格式错误!";
        return a.exec();
    }

    // 提取年、月、日、时、分、秒和毫秒
    int year = parts[0].toInt();
    int month = parts[1].toInt();
    int day = parts[2].toInt();
    int hour = parts[3].toInt();
    int minute = parts[4].toInt();
    int second = parts[5].toInt();
    int millisecond = parts[6].toInt();

    // 创建 QDateTime 对象,并设置为 UTC 时间
    QDate date(year, month, day);
    QTime time(hour, minute, second, millisecond);
    
    QDateTime dateTime(date, time, Qt::UTC);

    // 获取 UTC 时间戳(单位:毫秒)
    qint64 utcTimestampMillis = dateTime.toMSecsSinceEpoch();

    // 输出结果
    qDebug() << "UTC 时间戳(毫秒):" << utcTimestampMillis;

    return a.exec();
}

更改点:

  1. 创建 QDateQTime 对象:分别使用 QDate(year, month, day)QTime(hour, minute, second, millisecond) 来创建日期和时间对象。
  2. 然后将这两个对象传递给 QDateTime 构造函数

通过这样的更改,可以避免转换错误,同时确保代码能够正常编译并运行。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22020

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?