Какой формат datetime следует использовать для передачи объекта datetime с серверного сервера в браузер?
У вас есть по крайней мере два твердых варианта:
отправить его в миллисекундах-так-The-Epoch или секундные так-The-Эпоха. Это число миллисекунд (или секунд), которое прошло с 1 января 1970 года в полночь UTC. В JavaScript вы получаете экземпляр Date
с нескольких миллисекунд с эпохи «Эпоха» через new Date(num)
.
Пример: Номер 1461139200000
однозначно идентифицирует 20 апреля 2016 года в 8 часов утра точно в формате UTC.
Отправьте его как полную дату и время ISO-8601 с использованием UTC. Это поддерживается как входной формат для JavaScript-конструктора JavaScript Date
во всех современных браузерах, так как он был добавлен в спецификацию JavaScript в 2009 году. (Details here, обратите внимание, что добавленное было подмножеством полного ISO-8601, поэтому мое использование слова «полная» дата/время.)
Пример: Строка 2016-04-20T08:00:00.000Z
однозначно идентифицирует 20 апреля 2016 года в 8 часов утра точно UTC.
Обратите внимание, что IE8 был выпущен до этой спецификации и не поддерживает разбор этого формата строки. Но формат очень легко анализируется с помощью регулярного выражения, если вам нужно поддерживать устаревшие браузеры.
Преимущество второй формы в том, что это легче отлаживать при просмотре ответов HTTP и таких, как он в хорошей простой для восприятия человека формы.