Разделители компонентов даты и времени

Можете ли вы сказать, что выведет на консоль следующий код?

DateTime dt = new DateTime(2010, 10, 15);
Console.WriteLine(dt.ToString("yyyy/MM/dd"));

Если вы ответили "2010/10/15", то вы ошиблись. Знаете почему?

Особенность примера в символах "/". Метод DateTime.ToString воспринимает их как описатель формата и заменяет на разделитель, заданный в текущих региональных настройках. Аналогично для значения времени используется символ ":". В итоге, в возвращаемой строке вместо них могут отказаться практически любые символы.

Что делать, если необходимо получить строку именно с "/" и ":"? Надо указать, что это обычные символы, просто заключив их в кавычки.

DateTime dt = new DateTime(2010, 10, 15);
Console.WriteLine(dt.ToString("yyyy'/'MM'/'dd"));

Теперь при любых региональных настройках будет выведено "2010/10/15".

Дополнительная информация в библиотеке MSDN на английском и русском языках.

Комментарии (1) -

viter.alex 16.09.2010 3:38:17

Спасибо, интересный и неочевидный факт

Добавить комментарий