toISOString() возвращает строку с датой в формате ISO 8601. Метод не меняет объект Date, а просто преобразует его в строку по UTC.
Синтаксис
Базовая запись выглядит так:
date.toISOString()
Где:
date- это объектDate
У метода нет аргументов.
Что возвращает toISOString()
Метод возвращает строку в формате:
YYYY-MM-DDTHH:mm:ss.sssZ
Пример:
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
console.log(typeof date.toISOString()); // "string"
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Здесь:
YYYY- годMM- месяцDD- день месяцаTHH:mm:ss.sss- времяZ- признак того, что строка записана поUTC
Простой пример
const date = new Date("2025-01-15T14:30:45.123+03:00");
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Здесь объект даты был создан из строки с часовым поясом +03:00, но toISOString() всё равно вернул значение в UTC.
toISOString() всегда работает по UTC
Это главный нюанс метода.
toISOString() не использует локальное время пользователя. Он всегда возвращает дату и время именно в UTC.
const date = new Date("2025-01-15T14:30:45.123+03:00");
console.log(date.getHours()); // 14
console.log(date.getUTCHours()); // 11
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Поэтому строка из toISOString() удобна для API, баз данных, логов и обмена датами между разными системами.
У строки всегда есть Z в конце
Это полезно запомнить.
Символ Z в конце означает, что время записано в часовом поясе UTC.
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Если вам нужна строка в локальном часовом поясе, toISOString() для этого не подходит.
Миллисекунды в строке всегда дополняются до трёх цифр
Это ещё одна полезная деталь формата.
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 7));
console.log(date.toISOString()); // "2025-01-15T11:30:45.007Z"
Даже если миллисекунды равны 7, в строке они будут записаны как 007.
toISOString() не меняет исходную дату
Это важно не перепутать с методами вроде setTime() или setUTCHours().
toISOString() только читает текущее значение даты и возвращает строку.
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
const before = date.getTime();
const iso = date.toISOString();
console.log(iso); // "2025-01-15T11:30:45.123Z"
console.log(date.getTime() === before); // true
После вызова метода объект Date остаётся тем же самым.
Чем toISOString() отличается от toString()
Эти методы часто путают, потому что оба возвращают строку.
toISOString()возвращает дату в стандартизированном форматеISO 8601toString()возвращает строку в локальном часовом поясе пользователя
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
console.log(date.toString()); // локальная строка с часовым поясом
toISOString() особенно удобен, когда нужен предсказуемый и одинаковый формат независимо от устройства пользователя.
Чем toISOString() отличается от toUTCString()
Оба метода работают с UTC, но формат у них разный.
toISOString()возвращает строку в форматеISO 8601toUTCString()возвращает более человекочитаемую строку поUTC
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
console.log(date.toUTCString()); // "Wed, 15 Jan 2025 11:30:45 GMT"
Если строка нужна для передачи в коде, JSON, API или базе данных, чаще выбирают именно toISOString().
toISOString() удобно использовать при отправке данных
Это один из самых частых сценариев.
const createdAt = new Date();
const payload = {
createdAt: createdAt.toISOString(),
};
console.log(payload);
Так вы получаете единый формат даты, который удобно хранить и передавать между клиентом и сервером.
Invalid Date вызывает ошибку
Это очень важный момент.
Если объект Date невалидный, toISOString() не вернёт NaN и не вернёт строку "Invalid Date". Он выбросит ошибку RangeError.
const date = new Date("invalid");
console.log(String(date)); // "Invalid Date"
console.log(date.toISOString()); // RangeError
Поэтому перед вызовом метода полезно убедиться, что дата корректна.
Например так:
const date = new Date("invalid");
if (!Number.isNaN(date.getTime())) {
console.log(date.toISOString());
}
Когда это полезно
toISOString() особенно удобен, когда:
- нужно получить строку даты в стабильном формате
- вы отправляете дату в API или сохраняете её в базе данных
- важно избежать зависимости от локального часового пояса пользователя
- нужна дата, которую потом легко разобрать обратно
Пример:
const expiresAt = new Date(Date.UTC(2025, 0, 31, 23, 59, 59, 999));
console.log(expiresAt.toISOString()); // "2025-01-31T23:59:59.999Z"
Частые ошибки
Ожидать локальное время вместо UTC
const date = new Date("2025-01-15T14:30:45.123+03:00");
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Метод всегда возвращает строку по UTC.
Игнорировать Z в конце строки
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Z означает UTC, и это важно учитывать при отображении даты пользователю.
Думать, что метод меняет сам объект Date
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
date.toISOString();
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
Метод только создаёт строку и не изменяет дату.
Путать toISOString() и toUTCString()
const date = new Date(Date.UTC(2025, 0, 15, 11, 30, 45, 123));
console.log(date.toISOString()); // "2025-01-15T11:30:45.123Z"
console.log(date.toUTCString()); // "Wed, 15 Jan 2025 11:30:45 GMT"
Оба метода работают с UTC, но формат результата разный.
Вызывать toISOString() у Invalid Date
const date = new Date("invalid");
console.log(date.toISOString()); // RangeError
Для невалидной даты этот метод выбрасывает ошибку.
Быстрая памятка
toISOString()вызывается у объектаDate- метод не принимает аргументы
- результатом является строка
- строка всегда записывается по
UTC - в конце строки стоит
Z - формат обычно выглядит как
YYYY-MM-DDTHH:mm:ss.sssZ - метод не изменяет исходный объект
Date - для локальной строки чаще используют
toString() - для невалидной даты
toISOString()выбрасываетRangeError
Коротко
toISOString() в JavaScript нужен, чтобы получить дату в виде строки стандартного формата ISO 8601. Главное, что стоит запомнить: метод ничего не меняет в объекте Date, всегда работает по UTC, возвращает строку с Z в конце и выбрасывает RangeError, если дата невалидна.