ToLocaleTimeString: примеры (JAVASCRIPT)
toLocaleTimeString([locales, options]: Object): StringОсновные сведения о toLocaleTimeString
Метод toLocaleTimeString() принадлежит объекту Date в JavaScript и возвращает строку с представлением временной части даты, отформатированной согласно правилам заданной локали. Его применение целесообразно при необходимости отображения времени для пользователей в их региональном формате.
Функция принимает два аргумента: locales и options.
- locales: необязательный параметр. Может быть строкой с кодом языка (например, 'ru-RU', 'en-US') или массивом таких строк. Определяет язык и региональные настройки для форматирования.
- options: необязательный объект с настройками. Основные свойства:
- hour12: логическое значение, определяющее использование 12-часового (true) или 24-часового (false) формата.
- hour, minute, second: строки ('numeric', '2-digit'), управляющие отображением соответствующих компонентов.
- timeZone: строка, указывающая часовой пояс (например, 'UTC', 'Europe/Moscow').
- timeZoneName: строка ('short', 'long' и др.), определяющая отображение названия часового пояса.
- formatMatcher, localeMatcher: алгоритмы для согласования формата и локали.
Возвращаемое значение — строка, представляющая время в соответствии с переданными настройками. Если параметры не указаны, используется локаль по умолчанию и базовые настройки.
Простые примеры форматирования
Пример с локалью по умолчанию:
const date = new Date('2023-12-25T14:30:45');
console.log(date.toLocaleTimeString());// Результат зависит от локали системы, например: '14:30:45'
Пример с явным указанием локали:
console.log(date.toLocaleTimeString('ru-RU'));'14:30:45'
Пример с 12-часовым форматом:
console.log(date.toLocaleTimeString('en-US', { hour12: true }));'2:30:45 PM'
Пример с отображением только часов и минут:
console.log(date.toLocaleTimeString('ru-RU', {
hour: '2-digit',
minute: '2-digit'
}));'14:30'
Пример с названием часового пояса:
console.log(date.toLocaleTimeString('ru-RU', {
timeZoneName: 'short'
}));'14:30:45 GMT+3'
Похожие методы JavaScript
В JavaScript существуют другие методы для локализованного форматирования даты и времени.
- toLocaleDateString(): форматирует только дату (день, месяц, год), игнорируя время. Используется, когда временная часть не нужна.
- toLocaleString(): форматирует полную дату и время. Подходит для отображения и даты, и времени вместе.
- Intl.DateTimeFormat: объект конструктора для более сложного и производительного форматирования, когда один стиль применяется к множеству дат. Предпочтителен в циклах.
Выбор метода зависит от задачи: для времени — toLocaleTimeString, для даты — toLocaleDateString, для комплексного отображения — toLocaleString или Intl.DateTimeFormat.
Возможные ошибки применения
Ошибка использования метода для невалидной даты:
const invalidDate = new Date('не дата');
console.log(invalidDate.toLocaleTimeString('ru-RU'));'Invalid Date'
Ошибка передачи несуществующего кода локали может привести к использованию локали по умолчанию, а не к выбросу исключения:
console.log(date.toLocaleTimeString('xx-XX'));// Форматирование по умолчанию, например: '14:30:45'
Ошибка несовместимых опций. Некоторые комбинации параметров могут игнорироваться браузером:
console.log(date.toLocaleTimeString('ru-RU', {
hour: 'numeric',
hour12: false, // Может быть проигнорировано для локали 'ru-RU',
timeZone: 'Mars/Base' // Неверная зона
}));// Результат зависит от реализации, например: '14:30:45'
Обновления в спецификации
Наиболее значимые изменения связаны с расширением стандарта ECMAScript Internationalization API (ECMA-402).
- В более поздних версиях добавлена поддержка новых значений для опций, таких как
fractionalSecondDigitsдля отображения миллисекунд. - Улучшена обработка часовых поясов и календарных систем.
- Расширен список доступных локалей и их вариантов.
Например, возможность отображения долей секунды появилась относительно недавно и может не поддерживаться в устаревших средах выполнения.
Специальные примеры использования
Форматирование с миллисекундами:
const dateWithMs = new Date('2023-12-25T14:30:45.123');
console.log(dateWithMs.toLocaleTimeString('en-US', {
fractionalSecondDigits: 3
}));'2:30:45.123 PM'
Использование нескольких локалей с fallback:
console.log(date.toLocaleTimeString(['de-DE', 'ru-RU', 'en-US']));// Используется первая поддерживаемая локаль
Форматирование в часовом поясе UTC:
console.log(date.toLocaleTimeString('en-US', {
timeZone: 'UTC',
hour12: false
}));'11:30:45'
Кастомизация с полным названием часового пояса:
console.log(date.toLocaleTimeString('ru-RU', {
timeZoneName: 'longOffset'
}));'14:30:45 Московское время (стандартное)'
Форматирование только секунд (нестандартный вариант):
console.log(date.toLocaleTimeString('ru-RU', {
hour: undefined,
minute: undefined,
second: '2-digit'
}));'45'
Совместное использование с Intl.DateTimeFormat для многократного применения формата:
const formatter = new Intl.DateTimeFormat('ru-RU', {
hour: '2-digit',
minute: '2-digit',
timeZone: 'Europe/Samara'
});
console.log(formatter.format(date));'16:30'
Форматирование времени в других языках
В других языках программирования существуют аналогичные функции для локализованного форматирования времени.
Пример в PHP с использованием класса IntlDateFormatter:
$date = new DateTime('2023-12-25 14:30:45');
$formatter = new IntlDateFormatter(
'ru_RU',
IntlDateFormatter::NONE,
IntlDateFormatter::MEDIUM
);
echo $formatter->format($date);'14:30:45'
Пример в Python с модулем locale и strftime:
import locale
from datetime import datetime
locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8')
date = datetime(2023, 12, 25, 14, 30, 45)
print(date.strftime('%X'))'14:30:45'
Пример в MySQL с функцией DATE_FORMAT:
SELECT DATE_FORMAT('2023-12-25 14:30:45', '%T') AS time;'14:30:45'
Отличия заключаются в синтаксисе, поддержке локалей и гибкости настроек. В JavaScript метод встроен в объект Date, в то время как в PHP и Python часто требуется использование специальных классов или модулей.