Intl.DateTimeFormat.prototype.formatRange()
Базовый уровень Широко доступен
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна в браузерах с сентября 2017 года.
Метод formatRange() экземпляров Intl.DateTimeFormat форматирует диапазон дат наиболее кратким способом на основе локалей и опций, предоставленных при создании этого объекта Intl.DateTimeFormat.
Попробуйте
const options1 = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
const options2 = { year: "2-digit", month: "numeric", day: "numeric" };
const startDate = new Date(Date.UTC(2007, 0, 10, 10, 0, 0));
const endDate = new Date(Date.UTC(2008, 0, 10, 11, 0, 0));
const dateTimeFormat = new Intl.DateTimeFormat("en", options1);
console.log(dateTimeFormat.formatRange(startDate, endDate));
// Expected output: "Wednesday, January 10, 2007 – Thursday, January 10, 2008"
const dateTimeFormat2 = new Intl.DateTimeFormat("en", options2);
console.log(dateTimeFormat2.formatRange(startDate, endDate));
// Expected output: "1/10/07 – 1/10/08"
Синтаксис
formatRange(startDate, endDate)
Параметры
-
startDate - Начало диапазона дат. Может быть объектом
DateилиTemporal.PlainDateTime. Кроме того, может быть объектомTemporal.PlainTime,Temporal.PlainDate,Temporal.PlainYearMonthилиTemporal.PlainMonthDay, если объектDateTimeFormatбыл настроен для вывода как минимум одной соответствующей части даты.Примечание: Объект
Temporal.ZonedDateTimeвсегда вызоветTypeError; вместо этого используйтеTemporal.ZonedDateTime.prototype.toLocaleString()или преобразуйте его в объектTemporal.PlainDateTime. -
endDate - Конец диапазона дат. Должен иметь тот же тип, что и
startDate.
Возвращаемое значение
Строка, представляющая заданный диапазон дат, отформатированная в соответствии с локалью и опциями форматирования этого объекта Intl.DateTimeFormat. Если начальная и конечная даты эквивалентны на уровне точности вывода, вывод будет содержать только одну дату.
Примеры
Основное использование formatRange
Этот метод принимает два объекта Date и форматирует диапазон дат наиболее кратким способом на основе locale и options, предоставленных при создании Intl.DateTimeFormat.
const date1 = new Date(Date.UTC(1906, 0, 10, 10, 0, 0)); // Wed, 10 Jan 1906 10:00:00 GMT
const date2 = new Date(Date.UTC(1906, 0, 10, 11, 0, 0)); // Wed, 10 Jan 1906 11:00:00 GMT
const date3 = new Date(Date.UTC(1906, 0, 20, 10, 0, 0)); // Sat, 20 Jan 1906 10:00:00 GMT
const fmt1 = new Intl.DateTimeFormat("en", {
year: "2-digit",
month: "numeric",
day: "numeric",
hour: "numeric",
minute: "numeric",
});
console.log(fmt1.format(date1)); // '1/10/06, 10:00 AM'
console.log(fmt1.formatRange(date1, date2)); // '1/10/06, 10:00 – 11:00 AM'
console.log(fmt1.formatRange(date1, date3)); // '1/10/06, 10:00 AM – 1/20/07, 10:00 AM'
const fmt2 = new Intl.DateTimeFormat("en", {
year: "numeric",
month: "short",
day: "numeric",
});
console.log(fmt2.format(date1)); // 'Jan 10, 1906'
console.log(fmt2.formatRange(date1, date2)); // 'Jan 10, 1906'
console.log(fmt2.formatRange(date1, date3)); // 'Jan 10 – 20, 1906'
Спецификации
| Спецификация |
|---|
| ECMAScript® 2027 Internationalization API Specification # sec-intl.datetimeformat.prototype.formatRange |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | |
formatRange |
76 |
79 |
91 |
63 |
14.1 |
76 |
91 |
54 |
14.5 |
12.0 |
76 |
14.5 |
1.0.0 |
1.8 |
12.9.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. Дополнительную информацию см. в конструкторе DateTimeFormat(). |
См. также
© 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/Intl/DateTimeFormat/formatRange