JavaScript метод Date.toISOString()

Определение и применение

JavaScript метод toISOString() объекта Date преобразует дату в строку в формате ISO 8601, этот формат всегда имеет длину 24 или 27 символов:

Код
YYYY-MM-DDTHH:mm:ss.sssZ
±YYYYYY-MM-DDTHH:mm:ss.sssZ

Часовой пояс всегда имеет нулевое смещение UTC, обозначаемое суффиксом "Z".

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

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

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

JavaScript синтаксис

JavaScript
dateObj.toISOString();

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

Исходная дата не изменяется. Для действительной даты результат — строка в UTC: 24 символа при четырёхзначном годе или 27 при расширенном годе со знаком.

Метод не принимает параметров. Для Invalid Date выбрасывается RangeError. Это отличается от toJSON(), который для такой даты возвращает null.

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

ECMAScript — Date.prototype.toISOString(). Метод входит в стандарт начиная с ECMAScript 5.

Примеры, попробуйте сами

toISOString() — пример 1

Измените исходные значения и нажмите ▶. Сравните результат с комментариями; строка результата всегда использует UTC.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Строка без времени задаёт полночь по UTC.
const date = new Date('2019-04-01')
const dateString = date.toISOString()
console.log(dateString) // "2019-04-01T00:00:00.000Z"
console.log(typeof dateString) // "string"

RangeError и расширенный год

Перехватите ошибку недействительной даты и сравните обычный год с шестизначным.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
try {
    console.log(new Date(NaN).toISOString())
} catch (error) {
    console.log(error.name) // "RangeError"
}
console.log(new Date('+010000-01-01T00:00:00Z').toISOString()) // "+010000-01-01T00:00:00.000Z"