15 сентября 2010
Теория и практика
Можете ли вы сказать, что выведет на консоль следующий код?
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 на английском и русском языках.