Проблема DateTime на разных платформах (.NET 2.0) - PullRequest
1 голос
/ 26 июня 2009

В 32-битной ОС с процессором Intel, DateTime, например 17.02.2009 12:00:00 Обратите внимание, что это: мм / дд / гггг

В 64-битной ОС с процессором AMD, DateTime, например 17-02-2009 00: 00: 00

Теперь, когда я пытаюсь разобрать 1-й формат, на 2-й платформе выдается ошибка. Это означает - DateTime.Parse ("17.02.2009, 12:00:00 AM") - выдает ошибку - не может конвертировать. тогда как на той же платформе DateTime.Parse ("17/2/2009 12:00:00 AM") работает! Это означает, что ДД / ММ - это хорошо, ММ / ДД - нет.

Что вызывает это? 64-битная ОС? Процессор?

Как мне избавиться от проблемы?

Ответы [ 2 ]

5 голосов
/ 26 июня 2009

Сами DateTimes не имеют форматов. Вы анализируете их или форматируете в строки. (Это как числа - целые числа не хранятся в шестнадцатеричном или десятичном виде, они просто целые числа. Вы можете отформатировать их в шестнадцатеричном или десятичном виде, но само значение является просто числом.)

Формат будет зависеть от культуры операционной системы (или, точнее, культуры потока, которая обычно совпадает с культурой операционной системы).

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

2 голосов
/ 26 июня 2009

Проверьте «Форматы даты и времени» на панели управления «Регион и язык».

Кроме того, если вы хотите, чтобы DateTime генерировал определенный формат, не просто вызывайте обычный ToString (), а передавайте ему параметр, указывающий желаемый формат. Точно так же, если вы знаете формат даты, которую вы просите ее проанализировать, вызовите TryParseExact () и сообщите ему формат, который вы предоставляете.

См. Также MSDN Стандартные строки формата даты и времени

...