Как я могу получить формат проанализированной строки - PullRequest
0 голосов
/ 20 июля 2011

DateTime.Parse принимает строку и возвращает эквивалентный DateTime.

Есть ли способ получить формат, используемый синтаксическим анализатором?

Например, 19.07.2011 вернется M / dd / гггг, а 19-7-2011 вернет дд-М-гггг.

DateTime.TryParseExact будет работать для меня, если он также вернет используемый формат.

Ответы [ 4 ]

4 голосов
/ 20 июля 2011

Это невозможно, потому что отображение между форматом DateTime и конкретным выводом не является изоморфным (нет обратного отображения в один формат для каждого вывода) - рассмотрим только случай 11-07-2011 - это дд-мм-гггг или мм-дд-гггг?

1 голос
/ 20 июля 2011

См. http://msdn.microsoft.com/en-us/library/1k1skd40.aspx В частности, раздел «Примечания».

Лучший способ получить нужные форматы - прочитать документы.

0 голосов
/ 20 июля 2011

Перебирайте список форматов, которые вы передаете по одному в DateTime.TryParseExact.

Когда вы, наконец, получите истинное значение, вы точно знаете, какой формат .Net будет использовать для его анализа.

0 голосов
/ 20 июля 2011

DateTime.Parse использует текущую культуру текущего потока. Thread.CurrentThread.CurrentCulture.DateTimeFormat предоставит вам только для чтения экземпляр DateTimeFormatInfo, который вы можете использовать для проверки формата.

Свойство ShortDatePattern - это то, что вы ищете. Это ответит на ваш вопрос относительно формата, используемого синтаксическим анализатором, но нет способа получить формат после факта.
...