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

StackOverflow https://stackoverflow.com/questions/2146685

Вопрос

У меня есть строка, представляющая значение DataTime, и я хочу выяснить, какой формат строки использовался для создания строки.

Например
- Учитывая «среду, 27 января 2010 г.», я ожидаю «дддд дд МММ гггг»
- Учитывая "2010 01 27", я ожидаю "гггг мм дд"

Предположим, что дата близка к DateTime.Now и относится к CurrentCulture.Итак, учитывая, что у нас есть культура en-GB
- Учитывая «01 01 2010», я ожидаю «дд ММ гггг»

Есть ли простой способ сделать это?

Это было полезно?

Решение

Вы можете разделить на пробелы, чтобы получить массив струн, а затем вы могли бы проверить элементы в массиве на известных значениях, чтобы попытаться угадать формат

напримересли вы ищете «среда», если найдете, предположите «дддд»

если четырехзначное число, предположим, гггг

дни и месяцы могут быть проблемой, вы можете проверить более 12 дней, но это очень плохо

возможно, вы могли бы вывести формат, используя разделение пробелов, а затем DateTime.Parse на оригинале и протестировать отформатированную (с использованием выведенного формата) версию проанализированной даты на равенство

Другие советы

Самое простое, что нужно сделать, это посмотреть ссылка для строк форматирования даты и времени и их обработки.

Вы можете использовать отражение, чтобы получить это, или использовать дизассемблер (например, ИЛДАСМ), чтобы найти все строки, используемые в сборке, и угадать, какие из них являются строками форматирования даты и времени.

При разборке можно искать по дням недели и строке, начинающейся с dddd, который должен рассказать вам, как был построен оригинал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top