Как получить дату и время EST без изменения часового пояса машины и написания кода преобразования часового пояса?

Часовой пояс моего компьютера - IST, поэтому, когда я проверяю DateTime.Now в С#, он всегда будет показывать текущую дату и время этого часового пояса. Мне нужно получить дату и время в EST, когда я делаю DateTime.Now. Я не хочу менять часовой пояс машины и не хочу преобразовывать текущую дату и время в код преобразования времени записи EST, используя идентификатор часового пояса.

Причина в том, что я где-то читал в статье, что при изменении текущей культуры система будет вести себя таким образом, поэтому DateTime.Now также должен дать мне дату в EST. Пожалуйста, поправьте меня, если я ошибаюсь.


person SSD    schedule 05.02.2019    source источник
comment
Я должен получить дату и время в EST, когда я делаю DateTime.Now - Почему??? Почему бы вам не получить текущее время UTC и не преобразовать его в любой часовой пояс, который вы хотите?   -  person DmitriBodiu    schedule 05.02.2019


Ответы (1)


Причина в том, что я где-то читал в статье, что при изменении текущей культуры система будет вести себя таким образом, поэтому DateTime.Now также должен давать мне дату в EST. Пожалуйста, поправьте меня, если я ошибаюсь.

Хорошо, я поправлю вас. Вы ошибаетесь (извините).

DateTime.Now всегда возвращает местное время на основе настройки местного часового пояса операционной системы. На него не влияют изменения в CurrentCulture. Изменение текущей культуры может повлиять на формат отображения и систему календаря, используемую при создании строки из DateTime, но не влияет на саму DateTime и, следовательно, не влияет на часовой пояс.

Как правило, региональные или региональные параметры ортогональны часовым поясам. Например, если я англоговорящий американец, временно посещающий Японию, моя культура, скорее всего, будет en-US, а мой часовой пояс, скорее всего, будет Tokyo Standard Time.

person Matt Johnson-Pint    schedule 05.02.2019
comment
Спасибо @Matt за разъяснения. Я понял. - person SSD; 06.02.2019