Преобразование местного времени в UTC

123
11 октября 2019, 15:50

Почему эта строка даёт мне локальное время с компьютера?

System.DateTime.SpecifyKind(System.DateTime.Now, System.DateTimeKind.Utc).ToString();
Answer 1

var currentTimeInUTC = DateTime.UtcNow;

или

var currentTimeInUTC = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now);

Answer 2

Метод SpecifyKind, под капотом не производит никакого конвертирования (к/от UTC) с переданной ему датой. Фактически там происходит следующее:

return new DateTime(value.InternalTicks, kind); 

Таким образом просто меняется признак к какому часовому поясу относится значение даты(либо ни к какому в случае Unspecified)

Как уже сказано в ответе, конвертирование происходит при вызове

TimeZoneInfo.ConvertTimeToUtc

Есть более короткие записи:

DateTime.Now.ToUniversalTime()
DateTime.UtcNow.ToLocalTime()

Если интересно понять как преобразования работают внутри, смотрите класс TimeZoneInfo и его методы:

TimeZoneInfo.ConvertTimeFromUtc()
TimeZoneInfo.ConvertTimeToUtc()
READ ALSO
Парсинг документа .doc

Парсинг документа .doc

Основываясь на справочнике по структуре документа с разрешениемdoc решил написать программу для получения текстовой части этого документа

134
Почему Unity игнорирует BoxCollider2D и CircleCollder2D? [дубликат]

Почему Unity игнорирует BoxCollider2D и CircleCollder2D? [дубликат]

На данный вопрос уже ответили:

104
Как создать полет слегка отклоненный от цели выстрел из оружия AI от его цели

Как создать полет слегка отклоненный от цели выстрел из оружия AI от его цели

Полет пули к цели с практически одинаковой скоростью осуществляется с помощью данного скрипта:

137
Как переключать состояние в методе C# .NET

Как переключать состояние в методе C# .NET

Реализую простой фасад для сокрытия более низкоуровневых решенийЕсть модель данных:

118