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 года.

Показать браузеры
Совместимостьjavascript.builtins.Date.toJSON
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
toJSON✓3✓12✓1✓10.5✓4✓18✓4✓11✓3.2✓1.0✓4.4✓3.2

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

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
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Строка без времени задаёт полночь по 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
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
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"