在C ++ / CX中解析JSONISO8601日期

时间:2012-08-01 21:51:23

标签: c++ microsoft-metro windows-runtime atl c++-cx

我有一个来自JSON“2012-08-01T15:42:06Z”的日期字符串,并希望在Windows运行时解析它。据我所知,只有 COleDateTime 可以解决这个问题。

当我拿出'T'和'amp;'时,我只能正确地解析它。 'Z'字符,但这会在我的结尾添加一个额外的解析步骤。

WORKS:

COleDateTime dateTime;
dateTime.ParseDateTime(L"2012-08-01 15:42:06", 0UL, 1033UL);

失败:

COleDateTime dateTime;
dateTime.ParseDateTime(L"2012-08-01T15:42:06Z", 0UL, 1033UL);

有人有任何想法吗?

1 个答案:

答案 0 :(得分:4)

如果您的日期字符串格式一致,您可以使用std::get_time将时间解析为tm结构,将相关位复制到SYSTEMTIME并从那里转换为{ {1}}然后转到FILETIME

Windows::Foundation::DateTime上的信息:http://en.cppreference.com/w/cpp/io/manip/get_time

std::get_time转换为SYSTEMTIME的代码:How do I parse a date in a Metro (C++/CX) app?