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