出现这个错误是因为在某些情况下,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();
}
更改点:
- 创建
QDate
和QTime
对象:分别使用QDate(year, month, day)
和QTime(hour, minute, second, millisecond)
来创建日期和时间对象。 - 然后将这两个对象传递给
QDateTime
构造函数。
通过这样的更改,可以避免转换错误,同时确保代码能够正常编译并运行。
内容由零声教学AI助手提供,问题来源于学员提问