You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从GMT格式的分拆日期时间构造wxDateTime对象?

解答

直接无时区转换的实现方法

有。使用wxDateTime::ParseFormat()时,传入第三个参数wxDateTime::GMT,就能直接将输入的GMT时间字符串解析为内部存储的GMT时间,完全不需要时区转换。

代码示例:

wxString gmtTime = "2024-05-20 12:34:56";
wxDateTime dt;

if (dt.ParseFormat(gmtTime, "%Y-%m-%d %H:%M:%S", wxDateTime::GMT)) {
    // 解析完成,dt内部存储的就是输入的GMT时间
}

备选最简转换方法

如果受限于wxWidgets版本无法使用带时区参数的ParseFormat,可以先按默认本地时区解析字符串,再调用MakeGMT()抵消默认的时区转换:

wxString gmtTime = "2024-05-20 12:34:56";
wxDateTime dt;

if (dt.ParseFormat(gmtTime, "%Y-%m-%d %H:%M:%S")) {
    dt.MakeGMT(); // 将解析时按本地时区转换的结果转回到GMT
}

或者手动拆分时间字段后构造对象并标记为GMT:

// 假设已从字符串拆分得到年y、月mon、日d、时h、分min、秒s
wxDateTime dt(y, static_cast<wxDateTime::Month>(mon-1), d, h, min, s);
dt.SetToGMT(); // 告知对象这些时间值属于GMT,不做转换

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:25:41