Как преобразовать значения DateTimes в значения времени на основе UTC, чтобы сравнить время - C #

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

Вопрос

У меня string (переменная - fileDate) с значениями даты в следующем формате:

2/12/2011 11:58 AM

Теперь я хочу преобразовать это на дату, а затем в день UTC, на основе которых у меня проблемы при сравнении дат в разных машинах, поэтому * я всегда хочу преобразовать все строки (которые по сравнению) для значений UTC_DATE. *

Я попробовал этот код ниже, но он не работал, так как я не могу преобразовать вышеуказанную строку на основе DateTime (так как у него нет секунд).

DateTime date = Convert.ToDateTime(fileDate);
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
fileDate = date.ToString("MM/dd/yyyy hh:mm tt");
.

выше не работал, показывая форматеэксексуал. Можете ли вы помочь помочь?

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

Решение

Начать с того, что я предложил использовать использование DateTime.ParseExact Или TryParseExact для меня - не понятно, должен ли ваш образец должен быть 2 декабря или 12 февраля. Указание формата вполне может удалить ваш генеракодицетагкод.

Следующая проблема разрабатывает, какой часовой пояс вы хотите преобразовать его с - вы говорите, что 11:58 - это местный момент в некотором часовом поясе, или это уже Time UTC?

Кроме того, если это местное время, вам нужно будет рассмотреть два угловых случая (при условии, что вы используете часовой пояс, который наблюдает на летнее время):

    .
  • Местное время может быть пропущено из-за переходов DST, когда часы идут вперед. Так что, если часы пропускают от 1 утра до 2 утра, то 1:30 утра не существует вообще.
  • Местное время может быть неоднозначным из-за переходов DST, когда часы возвращаются. Так что, если часы возвращаются с 2 утра до 1 утра, то 1:30 утра возникают дважды в разных временах UTC - какое возникновение вас интересует?

Вы должны решить, как вы хотите обрабатывать эти случаи, и убедитесь, что они покрыты тестами вашего устройства.

Другой вариант - использовать мою библиотеку даты и времени, Noda Time , который отделяет концепции " местное дату / время "и" дата / время в определенном часовом поясе "(а другие) более явно.

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

Вы должны использовать DateTime.ParseExact, чтобы получить значение в правильный экземпляр dateTime, а затем вы можете использовать .ToUniversalTime(), чтобы получить время UTC (это было бы относительно разницы времени, что и в вашем сервере)

Вы можете использовать: DateTime.Now.ToUniversalTime();

Я не хочу сказать вам, чтобы вы должны использовать «datetime.now», но вы получаете точку, что как часть объекта DateTime, у вас есть способ преобразовать его в универсальное время

http://msdn.microsoft.com/ru--US / Библиотека / System.dateTime.tounversaltime.aspx

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