Разобрать дату JSON ISO8601 в C++/CX

У меня есть строка даты из JSON "2012-08-01T15:42:06Z", и я хочу проанализировать ее в среде выполнения Windows. Насколько я знаю, для этого доступен только COleDateTime.

Я могу заставить его правильно анализировать строку только тогда, когда я убираю символы «T» и «Z», но это добавляет дополнительный шаг синтаксического анализа с моей стороны.

РАБОТАЕТ:

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);

У кого-нибудь есть идеи?


person jarjar    schedule 01.08.2012    source источник


Ответы (1)


Если ваша строка даты отформатирована последовательно, вы можете использовать std::get_time для анализа времени в структуру tm, скопировать соответствующие биты в SYSTEMTIME и оттуда преобразовать в FILETIME, а затем в Windows::Foundation::DateTime.

Информация о std::get_time: http://en.cppreference.com/w/cpp/io/manip/get_time

Код для преобразования из SYSTEMTIME в DateTime: Как проанализировать дату в приложении Metro (C++/CX)?

person Andy Rich    schedule 02.08.2012