1

我需要将 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然后我必须转换为最终格式,上面的代码有什么错误吗?

任何帮助将不胜感激。

谢谢哈里斯

4

1 回答 1

6

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

您的日期格式也取决于语言环境。例如,参见"ddd"in的文档QDateTime::fromString

缩写的本地化日期名称(例如“Mon”到“Sun”)。使用 QDate::shortDayName()。

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

缩写的本地化日期名称(例如“Mon”到“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.

于 2015-06-19T06:03:39.653 回答