Не стандартно
Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.
Нестандартный метод toLocaleFormat()
преобразует дату в строку, используя указанное форматирование. Объект Intl.DateTimeFormat
является совместимой со стандартами альтернативой при форматировании дат. Так же смотрите новую версию метода Date.prototype.toLocaleDateString()
.
Синтаксис
dateObj.toLocaleFormat(formatString)
Параметры
formatString
- Строка формата в той же форме, что ожидается функцией C
strftime()
.
Описание
Метод toLocaleFormat()
обеспечивает больший контроль программного обеспечения над форматированием генерируемых даты и/или времени. Названия месяцев и дней недели локализуются с помощью локали операционной системы. Однако, порядок дней и месяцев и другие задачи локализации автоматически не обрабатываются, так как эти аспекты контролируете вы. Вы должны позаботиться о том, что строка формата была правильно локализована в соответствии с настройками системы пользователя. Знайте, что используемая локаль не обязательно совпадает с локалью браузера.
Разработчики расширений и XULRunner должны знать, что загрузку строки формата их файлов .dtd
или .properties
через URI chrome://somedomain/locale/somefile.ext
нужно избегать, поскольку файлы .dtd
/.properties
и метод toLocaleFormat()
не обязательно используют одну и ту же локаль, из-за чего результат может выглядеть странно, неоднозначно или даже нечитаемо.
Также обратите внимание, что поведение локали зависит от платформы и пользователь может настроить эту локаль, так что использование системной локали для выбора строки формата в некоторых случаях может быть даже неадекватным. Вы можете рассмотреть возможность использования более общих методов toLocale*
объекта Date
, либо написать свою собственную локализацию даты, используя для её отображения методы get*
объекта Date
.
Примеры
Пример: использование метода toLocaleFormat()
var today = new Date();
var date = today.toLocaleFormat('%A, %B %e, %Y'); // плохой пример
В примере выше метод toLocaleFormat()
возвращает строку вида "Wednesday, October 3, 2007". обратите внимание, что строка формата в данном примере не локализуется должным образом, что приводит к проблемам, описанным выше.
Библиотеки
Вы можете использовать библиотеку DateJS, если Date.prototype.toLocaleDateString()
недоступен:
if (!Date.prototype.toLocaleFormat) {
(function() {
Date.prototype.toLocaleFormat = function(formatString) {
return this.format(formatString);
};
}());
}
Спецификации
Не является частью какой-либо спецификации. Реализована в JavaScript 1.6.