JavaScript метод Date.toJSON()
Определение и применение
JavaScript метод toJSON() объекта
Date
для действительной даты возвращает строку в формате ISO (с помощью метода
toISOString()). Метод
toISOString()
преобразует дату в строку в формате
ISO 8601, этот формат всегда имеет длину 24 или 27 символов:
YYYY-MM-DDTHH:mm:ss.sssZ
±YYYYYY-MM-DDTHH:mm:ss.sssZ
Часовой пояс всегда имеет нулевое смещение UTC, обозначаемое суффиксом "Z". Метод
toJSON() является стандартным методом для сериализации объектов
Date
в формат
JSON.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
toJSON | 3 | 12 | 1 | 10.5 | 4 | 18 | 4 | 11 | 3.2 | 1.0 | 4.4 | 3.2 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
dateObj.toJSON();Возвращаемое значение и ошибки
Исходная дата не изменяется. Для действительной даты результат — строка в UTC: 24 символа при четырёхзначном годе или 27 при расширенном годе со знаком.
Для недействительной даты возвращается null. Метод вызывается автоматически при
JSON.stringify(); сам toJSON() возвращает строковое значение, а JSON-текст с кавычками
создаёт сериализатор. Передаваемый сериализатором аргумент key не используется стандартным методом.
JSON.parse() не восстанавливает объект Date автоматически: дата остаётся строкой. Создайте
объект через new Date(value) для известного поля.
Спецификация
ECMAScript — Date.prototype.toJSON(). Метод входит в стандарт начиная с ECMAScript 5.
Примеры, попробуйте сами
toJSON() — пример 1
Измените исходные значения и нажмите . Сравните результат с комментариями; строка результата всегда использует UTC.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// Строка без времени задаёт полночь по UTC.
const date = new Date('2019-04-01')
const dateString = date.toJSON()
console.log(dateString) // "2019-04-01T00:00:00.000Z"
console.log(typeof dateString) // "string"
Сериализация и недействительная дата
JSON.stringify() вызывает toJSON() автоматически. После JSON.parse() дата остаётся строкой.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
const data = { date: new Date('2019-04-01T00:00:00Z'), invalid: new Date(NaN) }
const json = JSON.stringify(data)
console.log(json) // '{"date":"2019-04-01T00:00:00.000Z","invalid":null}'
console.log(new Date(NaN).toJSON()) // null
const restored = JSON.parse(json)
console.log(typeof restored.date) // "string"
console.log(new Date(restored.date).toISOString()) // "2019-04-01T00:00:00.000Z"