我需要将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
然后我必须转换为最终格式,是否有任何错误用上面的代码?
任何帮助将不胜感激。
由于 哈里斯
答案 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
。