2015-10-01 6 views
1

Я пытаюсь получить строку из DateTime объекта, используя следующие C# код на .NET 4.5:DateTime.ToString() не работает хорошо для пользовательского шаблона и нестандартных системных настроек

var dateTime = new DateTime(2015, 9, 30); 
var str = dateTime.ToString("M/d/yyyy"); 

Console.WriteLine(str); 

Под нормальные обстоятельства, выход этого кода составляет 30.07.2012, как и ожидалось.

Однако, если я перейду к панели управления, региону и языку и измените шаблон «Краткая дата» для английского языка на «dd-MMM-yy», код, указанный выше, будет отображаться с 9-30 до 2015 года!

enter image description here

Кто-нибудь знает, почему это происходит и как это может фиксированной/работал вокруг? Обратите внимание, например, что если я выбираю в Region and Language еще один короткий шаблон даты, например «M/d/yy», код работает правильно.

ответ

3

/ в вашей строке формата рассматривается как разделитель даты и заменяется на какой разделитель определен в региональных настройках. Вам нужно избегать его с помощью \ (\\, если быть точным)

+0

Вы имеете в виду вот так: 'dateTime.ToString (" M \\/d \\/yyyy ")'? –

+0

Да, вот так. –

+0

Да, сейчас он работает правильно. Большое спасибо за быстрое решение! –

 Смежные вопросы

  • Нет связанных вопросов^_^