您的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
.