Разница в использовании DateTime.Now против DateTime.UtcNow - PullRequest
1 голос
/ 10 октября 2011

Как этот Ответ на вопрос из hightechrider упоминает, что кодовый блок, как показано ниже, является более правильным

var start = DateTime.Parse("08/10/2011 23:50:31").Utc;

if(start.AddMinutes(20) > DateTime.UtcNow)

, затем используется как это TimeSpan

var start = DateTime.Now;
var oldDate = DateTime.Parse("08/10/2011 23:50:31");

if(start - oldDate).TotalMinutes >= 20)

Здесь, поскольку DateTime выполняется и затем анализируется в той же культуре, как это будет иметь значение ??

Я чувствую себя очень Phoney от этого ответа.

Ответы [ 2 ]

10 голосов
/ 10 октября 2011

В двух словах: UTC - это непрерывная однозначная шкала времени, тогда как местное время не является непрерывным или однозначным.Основной причиной является Летнее время , которое не относится к UTC.Таким образом, UTC никогда не прыгает вперед или назад на час, в то время как местное время делает.И когда он возвращается назад, то же самое время встречается дважды.

Проведение сравнений лучше всего проводить с использованием непрерывной однозначной шкалы времени, если только вы не хотите возиться с DST самостоятельно.Даже если вы это сделаете, нет никакого способа отличить первое и второе «2 часа ночи», когда заканчивается летнее время и часы переводятся в исходное положение на час.

Техническое примечание: даже если UTC непрерывно, оно делаетдобавить дополнительную дополнительную секунду, чтобы не отставать от замедления вращения Земли.Эти секунды обычно добавляются в конце дня и отображаются с 60 секундами.Таким образом, у вас будет 23:59:59, 23:59:60, 00: 00: 00.

4 голосов
/ 10 октября 2011

США переходят с перехода на летнее время на стандартное время в 2 часа ночи 6 ноября 2011 года. Если в 2:10 утра я спрошу, как далеко в прошлом 1:50 утра, .NET скажет мне 20 минут.По правде говоря, это был час и 20 минут, так как мы вернули наши часы на час в 2 часа ночи.Я не буду сталкиваться с этими проблемами, если использую UTC - библиотеки, такие как .NET Framework, имеют всю логику, необходимую для правильного решения таких проблем, как эта.

Вся схема перехода на летнее время - беспорядок, и этоТяжело каждому, чья страна, как и ваша, (разумно) ее не реализует, понимает возникающие проблемы.Это становится еще интереснее, когда правительства начинают менять дни перехода.

...