如何从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
相关产品推荐
相关产品推荐

