DateTime.ParseExact проблема с тайским / буддийским временем - PullRequest
7 голосов
/ 29 июля 2011

После того, как клиент загрузит файл с нашего сервера вместе с нашим приложением, приложение выполняет ParseExact в строке даты, которая поступает с сервера в виде: yyyy/mm/dd HH:mm:ss.

После многих недоразуменийЯ заметил в некоторых журналах, что дата в системе клиентов была 19/7/2554.Оказывается, это правильное время, как в Таиланде, Windows по умолчанию использует систему времени буддийской эры, где это год 2554.

Мой точный анализ выполняется с использованием инвариантной культуры, которая, как я подозреваюпроблема, но я подумал, что культура ссылается на формат, который вы пытаетесь проанализировать?

Полученное сообщение об исключении: String не был распознан как действительный DateTime, потому что день недели был неправильным

1 Ответ

1 голос
/ 29 июля 2011

CultureInfo также содержит информацию календаря.Если метод TryParseExact имеет доступ к правильной информации календаря, он сможет правильно проанализировать дату.

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.calendar.aspx

Если заменить InvariantCulture CultureInfo на Thai CultureInfo, тогда по умолчаниюбудет использоваться календарь для этой культуры.

Кроме того, вы можете использовать перегрузку метода TryParse, который не требует CultureInfo.Культура, используемая в этом случае, будет зависеть от региональных настроек пользователя в Windows.

...