Spec-Zone.ru › JavaScript

Date.prototype.toJSON()

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на множестве устройств и версий браузеров. Она доступна во всех браузерах с июля 2015 года.

Метод toJSON() экземпляров Date возвращает строку, представляющую эту дату в том же формате ISO, что и toISOString().

Попробовать

const event = new Date("August 19, 1975 23:15:30 UTC");

const jsonDate = event.toJSON();

console.log(jsonDate);
// Expected output: "1975-08-19T23:15:30.000Z"

console.log(new Date(jsonDate).toUTCString());
// Expected output: "Tue, 19 Aug 1975 23:15:30 GMT"

Синтаксис

toJSON()

Параметры

Нет.

Возвращаемое значение

Строка, представляющая заданную дату в формате строки даты и времени согласно универсальному времени, или null, если дата недействительна. Для действительных дат возвращаемое значение совпадает со значением, возвращаемым toISOString().

Описание

Метод toJSON() автоматически вызывается функцией JSON.stringify(), когда объект Date преобразуется в строку. Этот метод обычно предназначен для полезной сериализации объектов Date по умолчанию во время сериализации JSON, которые затем могут быть десериализованы с использованием конструктора Date() в качестве функции-восстановителя (reviver) JSON.parse().

Сначала метод пытается преобразовать свое значение this в примитив, вызывая методы [Symbol.toPrimitive]() (с "number" в качестве подсказки), valueOf() и toString(), в указанном порядке. Если результатом является неконечное число, возвращается null. (Обычно это соответствует недействительной дате, чей valueOf() возвращает NaN.) В противном случае, если преобразованный примитив не является числом или является конечным числом, возвращается значение, возвращаемое this.toISOString().

Обратите внимание, что метод не проверяет, является ли значение this действительным объектом Date. Тем не менее, вызов Date.prototype.toJSON() для объектов, не являющихся Date, завершится ошибкой, если только примитивное числовое представление объекта не является NaN, или объект также не имеет метода toISOString().

Примеры

Использование toJSON()

const jsonDate = new Date(0).toJSON(); // '1970-01-01T00:00:00.000Z'
const backToDate = new Date(jsonDate);

console.log(jsonDate); // 1970-01-01T00:00:00.000Z

Цикл сериализации-десериализации

При разборе JSON, содержащего строки дат, вы можете использовать конструктор Date(), чтобы восстановить их до исходных объектов даты.

const fileData = {
  author: "Maria",
  title: "Date.prototype.toJSON()",
  createdAt: new Date(2019, 3, 15),
  updatedAt: new Date(2020, 6, 26),
};
const response = JSON.stringify(fileData);

// Imagine transmission through network

const data = JSON.parse(response, (key, value) => {
  if (key === "createdAt" || key === "updatedAt") {
    return new Date(value);
  }
  return value;
});

console.log(data);

Примечание: Функция-восстановитель (reviver) JSON.parse() должна соответствовать ожидаемой структуре полезной нагрузки, поскольку сериализация является необратимой: невозможно отличить строку, представляющую дату, от обычной строки.

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-date.prototype.tojson

Совместимость с браузерами

Настольные Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
toJSON
3
12
1
10.5
4
18
4
11
3.2
1.0
4.4
3.2
1.0.0
1.0
0.10.0

См. также

  • Date.prototype.toLocaleDateString()
  • Date.prototype.toTimeString()
  • Date.prototype.toUTCString()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API