Разница между Date.toJSON() и Date.toISOstring() - программирование
Подтвердить что ты не робот

Разница между Date.toJSON() и Date.toISOstring()

Я проверял, как отображать дату JavaScript в следующем формате: YYYY-MM-DDTHH:mm:ss.sssZ, но я видел два метода: .toJSON() и . toISOstring(). Есть ли какая-то реальная разница между ними?

4b9b3361

Ответ 1

Внутри, toJSON() вызывает toISOString(), если он доступен, поэтому никакой разницы.

15.9.5.44 Date.prototype.toJSON(ключ)

Эта функция предоставляет строковое представление объекта Date для использования JSON.stringify(15.12.3).

Когда метод toJSON вызывается с помощью ключа аргумента, выполняются следующие шаги:

  • Пусть O является результатом вызова ToObject, давая ему это значение в качестве своего аргумента.

  • Пусть tv - ToPrimitive (O, номер подсказки).

  • Если tv является числом и не является конечным, верните null.

  • Пусть toISO является результатом вызова внутреннего метода O [[Get]] с аргументом "toISOString".

  • Если IsCallable (toISO) является ложным, введите исключение TypeError.

  • Возвращает результат вызова внутреннего метода to [[Call]] toISO с O в качестве этого значения и пустого списка аргументов.

Ответ 2

Одно удобное отличие состоит в том, что если у вас есть недопустимая дата, .toJSON() выведет null. Однако поведение .toISOString() может меняться. В firefox это выводит строку "Invalid Date", но в chrome возникает исключение.

Изменить: последние версии Firefox исправили поведение так же, как хром (повышение исключения). Однако разница между .toJSON() и .toISOString() остается. (вывод исключения null или повышение)

Ответ 3

Формат даты JSON следует за ISO 8601, который также вырабатывается toISOString. Функциональной разницы между значениями, возвращаемыми любым методом, нет.