Странное поведение DateTime.ToString - PullRequest
1 голос
/ 23 августа 2010

У меня есть следующая строка кода внутри функции:

String value = endDate.Value.ToString(dateFormatStr);
//endDate is a DateTime? object (returned from a LINQ to SQL query).

В конкретном случае, когда я испытываю странное поведение, значение endDate равно {10/2/2010 12:00:00AM}.Вот мои результаты:

dateFormatStr = "d" => value = "10/2/2010" (я бы ожидал "2")
dateFormatStr = "M" => value = "October 2"(Я бы ожидал "10")

Ответы [ 5 ]

3 голосов
/ 23 августа 2010

Ваш результат соответствует спецификации microsoft

Используйте относительные свойства DateTime , чтобы получить День, Месяц и Год

**** Отредактировано ****

Проверьте этот код, чтобы увидеть, как символ «d» меняет свое поведение в зависимости от того, находится он один или является частью строки шаблона

DateTime time = DateTime.Now;

// 'd' is part of a pattern expression: "d "
MessageBox.Show(time.ToString("d "));
// result: "24 "

// 'd' defines a specific pattern: "short date"
MessageBox.Show(time.ToString("d"));
//result : "24/08/2010"
2 голосов
/ 23 августа 2010

Необходимо использовать «%» перед форматом при использовании односимвольного пользовательского формата, соответствующего стандартному формату.Например:

endDate.Value.ToString("%d");

См. http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers

1 голос
/ 23 августа 2010

Посмотрите на этот сайт .

Это вовсе не является нерегулярным, фактически вы используете односимвольные стандартные форматы ( здесь ) для дат.

Если вы хотите разделить ваши форматы так, как вы ожидаете, либо используйте dd и MM, либо (если это то, что вам нужно сделать), просто возьмите целочисленное значение из DateTime объект.

т.е:

endDate.Value.Day
endDate.Value.Month
0 голосов
/ 23 августа 2010

У некоторых шаблонов есть какое-то короткое имя - однозначное имя, которое совпадает с используемым в полных шаблонах, но, к сожалению, имеет другое значение. Вы только что обнаружили это.

Это еще один сайт , который может быть полезным.

0 голосов
/ 23 августа 2010

Я думаю, что у вас неправильные строки формата. Попробуйте "dd" и "MM".

...