TryParseExact возвращает false, хотя я не знаю, почему
Метод TryParseExact
в блоке кода ниже возвращает true
.
Я хотел бы знать, почему.
Я думаю, что эта дата "2013.03.12"
неверна, потому что это не разделяется косой чертой, а точкой.
После того как я изменил значение CultureInfo
"de-De"
на "en-US"
, метод возвращает false
. Это может быть намек, но я до сих пор не знаю, почему это происходит.
var format = new string[] { "yyyy/MM/dd" };
var parsed = new DateTime();
var result = DateTime.TryParseExact("2013.03.12", format,
new CultureInfo("de-DE"), DateTimeStyles.None, out parsed);
Ответы
Ответ 1
Я думаю, что ваш текущий DateSeparator
будет .
(точка) и /
автоматически заменить на него.
/
seperator имеет особое значение "замените меня текущим разделителем дат культуры"
CultureInfo c = new CultureInfo("de-DE");
Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot)
Взгляните на "/"
Спецификатор специального формата
Ответ 2
Как указывает @Soner Gönül , /
воспринимается как "разделитель даты" в строки пользовательского формата. Если вы хотите принимать только символы /
, вам необходимо их избежать:
var format = new string[] { @"yyyy\/MM\/dd" };