Различие между значениями Момент и ДатаВремя

Момент удобно использовать для программных целей, но не очень удобно использовать для представления информации пользователю. Пользователь привык воспринимать дату и время в таком виде, чтобы сразу понимать, какие дата и время там, где человек сейчас находится (в своей временной зоне).

Такие дату и время мы будем называть локальными датой и временем. Локальные дата и время — это абсолютный момент времени, приведенный к конкретной временной зоне. Для того, чтобы использовать локальные дату и время, предназначен тип ДатаВремя. Нужно понимать, что локальные дата и время не имеют смысла без указания конкретной временной зоны.

Рассмотрим пример. Имеется некоторое событие, которое произошло в Москве, 1 марта 2020 года в 13 часов ровно. Для этого события значение типа Момент будет равно 2020-03-01 10:00:00.000 Z. Если это же локальное время представить в других временных зонах, то мы получим следующие значения:
  • Временная зона UTC-3 (Дания, Бразилия): 2020-03-01 07:00:00.000
  • Временная зона UTC-1 (Азорские острова): 2020-03-01 09:00:00.000
  • Временная зона UTC+1 (Австрия, Германия): 2020-03-01 11:00:00.000
  • Временная зона UTC+3 (Россия (Москва), Белоруссия): 2020-03-01 13:00:00.000
Последовательность можно продолжить для других временных зон.

В этом примере видна разница между локальными датой и временем и абсолютным моментом времени. Таким образом, можно сделать следующий вывод: если нужно сравнить различные моменты времени в некоторой совпадающей системе координат, следует использовать значение типа Момент (абсолютный момент времени). Если нужно отображать значение момента времени пользователю, следует использовать значение типа ДатаВремя (локальные дату и время). При этом нужно иметь в виду, что тип ДатаВремя не хранит временную зону, для которой сформировано это значение. Поэтому сравнивать значения типа ДатаВремя имеет смысл только в том случае, когда оба сравниваемых значения заданы для одной временной зоне.