Преобразование String в DateTime в формате С# в Великобритании и США

Я пытаюсь преобразовать строку в datetime

Я использовал

DateTime convertedDate = DateTime.Parse(lastModificationDate);

для преобразования даты

моя проблема, иногда дата будет в формате Великобритании, а иногда и в формате США

т.е. UK 11/09/2011 10:34 US 2/28/2010 13:56

Как я могу обрабатывать оба формата, когда я не уверен, в каком формате будет находиться строка, то есть мы или uk?

Ответ 1

Вы принципиально не можете. У вас недостаточно данных. Как человек, какая дата здесь участвует?

11/09/2011 10:34

Это 11 сентября или 9 ноября?

Если вы не можете сказать разницу как человек, нет никаких шансов на то, что компьютер сделает это.

Теперь, если вы можете получить сигнал из другого источника в том же источнике данных, то это начало - например, вы можете эвристически попытаться разобрать все даты в формате США и все даты в формате Великобритании, а если 100 % пропускают как формат Великобритании, но 60% неудачу в формате США (из-за попыток разобраться в днях как недействительные месяцы), тогда вы вполне можете предположить, что они являются датами в Великобритании.

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

Ответ 2

По этой причине вы должны хранить свои даты в базе данных в стандартизованном формате, обычно UTC.

Затем вы можете разобрать локальное время для пользователей с UTC с помощью javascript и т.д.