QDateTime转换

时间:2015-06-19 04:48:54

标签: qt qdatetime

我需要将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

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

任何帮助将不胜感激。

由于 哈里斯

1 个答案:

答案 0 :(得分:5)

你的date字符串不包含时间,而你提到你需要一个时间,这至少会在Qt 5.4中失败。 我不知道为什么你得到了epoche outputed,也许这取决于你的Qt版本。

您的日期格式也是依赖于区域设置。 例如,请参阅QDateTime::fromString"ddd"的doucmentation:

  

缩写的本地化日期名称(例如,'周一' Sun')。使用QDate :: shortDayName()。

遗憾的是,QDateTime::toString更为明确:

  

缩写的本地化日期名称(例如,'周一' Sun')。使用系统区域设置来本地化名称,即QLocale :: system()。

例如,在我的语言环境(德语,奥地利)" ddd"因为星期四导致"Do.""Thu"不同,因此无法使用该语言环境解析英语缩写。

要确保在读取或编写与语言环境相关的输出时使用正确的语言环境,请使用QLocale。 在你的情况下,QLocale::toDateTime

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

然后,如果您还希望依赖于语言环境的输出,请使用QLocale::toString