Для этого нет стандарта, потому что дата и отметка времени являются логически двумя очень разными понятиями.
- Дата охватывает весь диапазон времени в этом дне, а не конкретную точкуво времени.
- Это может быть другая дата для человека в другом часовом поясе в любой данный момент времени, но сами даты не связаны с часовыми поясами. Визуализируйте дату как квадрат в календаре, а не точку на временной шкале.
- Многие API будут использовать полночь (
00:00
) в качестве времени по умолчанию, когда для даты назначено значение только для даты +значение времениОднако: - Будь то UTC или местное время, очень зависит от этого конкретного API. Для этого нет стандарта, и при этом один ответ не обязательно лучше другого.
- Назначение полуночи по местному времени может быть проблематичным для часовых поясов с переходами около полуночи. Например, в Сантьяго, Чили, 2019-09-08 , день начался в
01:00
из-за начала летнего времени. В этот день не было 00:00
.
Кроме того, вы отметили свой вопрос momentjs
. Поскольку объект Moment
в основном является меткой времени (а не датой), Moment.js обычно назначает начало дня, если предоставлено значение только для даты. Используемый часовой пояс является ключом к решению, какой момент на самом деле, который иллюстрирует мои предыдущие моменты.
Например:
// Parsing as UTC
moment.utc('2019-09-08').format() //=> "2019-09-08T00:00:00Z"
// Parsing as Local Time (my local time zone is US Pacific Time)
moment('2019-09-08').format() //=> "2019-09-08T00:00:00-07:00"
// Parsing in a specific time zone (on a day without midnight)
moment.tz('2019-09-08', 'America/Santiago').format() //=> "2019-09-08T01:00:00-03:00"
Также имейте в виду, что иногда API могут быть названы неправильно. Объект JavaScript Date
является не только значением даты, но фактически отметкой времени, как момент.