У меня возникла проблема с преобразованием дат в заданном формате ввода в целевой. Есть ли стандартный способ сделать это на C#?Преобразование между форматами даты и времени
Например, у нас есть yyyy.MM.dd
в качестве исходного формата, а целевой формат - MM/dd/yyy
(текущая культура).
Проблема возникает из-за того, что я использую стратегию синтаксического анализа, которая отдает приоритет текущей культуре, а затем, если она не работает, она пытается разобрать из списка известных форматов. Теперь скажем, что у нас есть две эквивалентные даты в культуре источника выше (2015.12.9
), а другая в текущей культуре (9/12/2015
). Затем, если мы попытаемся проанализировать эти две даты, месяц будет 12 для первого случая, а во втором будет 9, поэтому у нас есть несогласованность (они должны были быть одинаковыми точными датами).
Я считаю, что если существующие это должно быть что-то, как
DateTime.Convert(2015.12.9, 'yyyy/MM/dd', CultureInfo.CurrentCulture).
Любые идеи?
EDIT:
Спасибо всем за ваши идеи и предложения, однако интерпретация большинство из вас дал на мой вопрос был не совсем прав. На то, что большинство из вас ответили, - это прямой анализ в данном формате, а затем преобразование в CurrentCulture.
DateTime.ParseExact("2015.12.9", "yyyy.MM.dd", CultureInfo.CurrentCulture)
Это все равно вернет 12 в качестве месяца, хотя оно находится в формате CurrentCulture. Таким образом, мой вопрос был, есть ли стандартный способ трансформировать дату в yyyy.MM.d
в формат MM/dd/yyy
, чтобы месяц был в правильном месте, а THEN
проанализировал его в целевой культуре. Такая функция, вероятно, будет неистинной.
Или, [Datetime.TryParse] (https://msdn.microsoft.com/en-us/library/9h21f14e%28v = vs.110% 29.aspx) принимает информацию о формате (пример на связанной странице). –
Что вы будете делать, если текущая культура 'yyyy-mm-dd', а входящая дата' 09/12/2015'?Вы не можете знать, равна ли дата ввода mm/dd/yyyy или dd/mm/yyyy –
Точно. Я отказался от этого. Это было требованием моего руководителя, но я просто убедил его, что это просто невозможно, единственный способ преодолеть эту проблему - это определить формат, который хранится для данного времени в данных, а затем перезапустить разбор, заставляющий его использовать до тех пор, пока появляется формат, который правильно анализирует все данные. – user3853059