DateTime.ToString ("s") всегда возвращает один и тот же формат? - PullRequest
7 голосов
/ 29 июня 2009

В соответствии с MSDN для DateTime.ToString ToString ("s") всегда должна возвращать строку в формате форматируемого стиля XML-схемы, например: 2008-10-01T17: 04: 32.0000000

В Reflector я пришел к этому шаблону внутри DateTimeFormatInfo.

public string SortableDateTimePattern
{
      get
      {
            return "yyyy'-'MM'-'dd'T'HH':'mm':'ss";
      }
}

DateTime.ToString ("s") всегда возвращает строку в этом формате?
Независимо от культуры, региона, ...


Да, это так
Код для проверки

var dateTime = DateTime.Now;
var originialString = dateTime.ToString("s");
string testString;

foreach (var c in System.Globalization.CultureInfo.GetCultures(CultureTypes.AllCultures))
{
    Thread.CurrentThread.CurrentUICulture = c;
    if (c.IsNeutralCulture == false)
    {
        Thread.CurrentThread.CurrentCulture = c;
    }

    testString = dateTime.ToString("s");
    Console.WriteLine("{0} ", testString);
    if (originialString != testString)
    {
        throw new ApplicationException(string.Format("ToString(s) is returning something different for {0} " , c));
    }
}

Ответы [ 2 ]

15 голосов
/ 29 июня 2009

Да, это так. Как уже говорили другие, он содержит только числовые значения и строковые литералы (например, «T» и «:»), ничего, что не изменяется в зависимости от региона или культуры.

11 голосов
/ 29 июня 2009

Да. Разбивка этого паттерна вниз , это только числовые свойства, там нет ссылки на что-либо вроде месяца или дня Имена .

гггг - четырехзначная дата
MM - двухзначный месяц с начальным нулем
дд - день, состоящий из двух цифр, с ведущим нулем
T - буквальный T
ЧЧ - двухзначный час, с начальным нулем, 24-часовой формат
мм - двухзначная минута, с начальным нулем
сс - 2-значная секунда, с начальным нулем

...