QDateTime转换

QDateTime Conversion

我需要将 String 变量转换为 QDateTime 格式

我的代码看起来

QString date ="Thu Jun 18 2015";
QDateTime tmp = QDateTime::fromString(date,"ddd MMM dd yyyy HH:mm:ss");

但结果是Thu Jan 1 00:00:00 1970

稍后我必须将此日期转换为格式 yyyy-MM-dd HH:mm:ss,因此作为第一步,我将字符串转换为 QDateTime 然后我必须转换为最终格式,是吗上面的代码有什么错误吗?

我们将不胜感激。

谢谢 哈里斯

你的 date 字符串不包含时间,虽然你提到你想要一个,但这至少在 Qt 5.4 中会失败。 我不知道你为什么输出纪元,也许这取决于你的 Qt 版本。

您的日期格式也区域设置相关。 例如,参见 QDateTime::fromString:

"ddd" 的文档

the abbreviated localized day name (e.g. 'Mon' to 'Sun'). Uses QDate::shortDayName().

不幸的是,这不是那么清楚,而 QDateTime::toString:

则更清楚

the abbreviated localized day name (e.g. 'Mon' to 'Sun'). Uses the system locale to localize the name, i.e. QLocale::system().

例如,在我的语言环境(德语、奥地利)中,星期四的 "ddd" 结果与 "Thu" 不同,因此无法使用该语言环境解析英语缩写.

为确保您在读取或写入区域设置相关输出时使用正确的区域设置,请使用 QLocale。 在你的情况下是 QLocale::toDateTime:

QLocale locale(QLocale::English, QLocale::UnitedStates);
QDateTime dt = locale.toDateTime("Jun 18 2015", "MMM dd yyyy");

然后,如果您还想要区域设置相关的输出,请使用 QLocale::toString