Я проверял, как отображать дату JavaScript в следующем формате: YYYY-MM-DDTHH:mm:ss.sssZ
, но я видел два метода: .toJSON() и . toISOstring().
Есть ли какая-то реальная разница между ними?
Разница между Date.toJSON() и Date.toISOstring()
Ответ 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
. Функциональной разницы между значениями, возвращаемыми любым методом, нет.