DateTime.Now против DateTime.UtcNow - PullRequest
       32

DateTime.Now против DateTime.UtcNow

192 голосов
/ 15 сентября 2008

Мне было интересно, каковы принципы работы этих двух свойств. Я знаю, что второй является универсальным и в основном не касается часовых поясов, но кто-то может подробно объяснить, как они работают и какой из них следует использовать в каком сценарии?

Ответы [ 12 ]

1 голос
/ 08 сентября 2014

DateTime.UtcNow - это непрерывный однозначный масштаб времени, тогда как DateTime.Now не является непрерывным или однозначным. Основной причиной является летнее время, которое не относится к UTC. Таким образом, UTC никогда не переходит вперед или назад на час, тогда как местное время (DateTime.Now) делает. И когда он прыгает назад, то же самое время встречается дважды.

0 голосов
/ 15 сентября 2008

Если вам нужно местное время для машины, на которой работает ваше приложение (например, CEST для Европы), используйте Сейчас. Если вы хотите универсальное время - UtcNow. Это зависит только от ваших предпочтений - возможно, создание локального веб-сайта / отдельного приложения, которое вы хотели бы использовать время, которое пользователь выбрал, - так зависит от его / ее настройки часового пояса - DateTime.Now.

Просто помните, для веб-сайта это настройка часового пояса сервера. Поэтому, если вы отображаете время для пользователя, либо получите его предпочтительный часовой пояс и сместите время (просто сохраните время Utc в базе данных и измените его) или укажите его UTC. Если вы забудете это сделать, пользователь увидит что-то вроде: отправил 3 минуса назад , а затем время в будущем рядом с ним:)

...