Различие между значениями Момент и ДатаВремя
Момент
удобно использовать для программных целей, но не очень удобно использовать для представления информации пользователю. Пользователь привык воспринимать дату и время в таком виде, чтобы сразу понимать, какие дата и время там, где человек сейчас находится (в своей временной зоне).
Такие дату и время мы будем называть локальными датой и временем. Локальные дата и время — это абсолютный момент времени, приведенный к конкретной временной зоне. Для того, чтобы использовать локальные дату и время, предназначен тип ДатаВремя
. Нужно понимать, что локальные дата и время не имеют смысла без указания конкретной временной зоны.
Рассмотрим пример. Имеется некоторое событие, которое произошло в Москве, 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
.
Последовательность можно продолжить и для других временных зон.
В этом примере видна разница между локальными датой и временем и абсолютным моментом времени. Таким образом, можно сделать следующий вывод: если нужно сравнить различные моменты времени в некоторой совпадающей системе координат, следует использовать значение типа Момент
(абсолютный момент времени). Если же нужно отобразить значение момента времени пользователю, следует использовать значение типа ДатаВ ремя
(локальные дату и время). При этом нужно иметь в виду, что тип ДатаВремя
не хранит временную зону, для которой сформировано это значение. Поэтому сравнивать значения типа ДатаВремя
имеет смысл только в том случае, когда оба сравниваемых значения заданы для одной временной зоны.