Вопрос

На 32 -битной ОС, с процессором Intel, DateTime EG17.02.2009 12:00:00 Обратите внимание, что это:мм/ДД//гггг

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top