Javascript.RU

toLocaleFormat

Синтаксис

toLocaleFormat(formatString)

Аргументы

formatString
Строка описания формата в том же формате, что и функция strftime() языка C.

Описание, примеры

Метод toLocaleFormat обеспечивает больший контроль за представлением даты и времени. Названия месяцев и дней недели представляются согласно языковым настройкам системы. Однако порядок записи месяца и числа и прочие элементы локализации не выбираются автоматически, поскольку вы сами задаёте порядок их следования. Следует принять к сведению, что строка будет локализована согласно настройкам операционной системы, которые могут не совпадать с региональными настройками браузера.

В большинстве случаев вместо данного метода, возможно, следует использовать более общие методы toLocale* или произвести локализацию собственными средствами, опираясь на данные методов get*.

Пример: Неправильное использование toLocaleFormat
var today = new Date();
var date = today.toLocaleFormat("%A, %B %e, %Y"); // Плохой пример
// Выводит что-то вроде "пятница, Октябрь 04, 1957" - ну куда это годится?

Автор: ALastorZ (не зарегистрирован), дата: 24 ноября, 2009 - 09:15
#permalink

Хром ругается на отсутствие этого метода у объекта, пришлось пользовать регэкспы =(


Автор: hudson (не зарегистрирован), дата: 9 апреля, 2010 - 12:41
#permalink

ALastorZ: поделились бы сниппетом


Автор: Гость (не зарегистрирован), дата: 6 апреля, 2011 - 13:14
#permalink

Что-то в Опере не работает, ругается что нет такой функции toLocaleFormat


Автор: Гость (не зарегистрирован), дата: 8 сентября, 2012 - 20:58
#permalink

>>>
formatString
Строка описания формата в том же формате, что и функция strftime() языка C.
>>>

хотелось бы расшифровку - я, к примеру, незнаю
хотел привести дату к формату = мм/дд/гггг - чч:мм:сс
не подскажете?


Автор: Гость (не зарегистрирован), дата: 9 сентября, 2012 - 13:43
#permalink

>>>
нашел так - var date=today.toLocaleFormat('%m/%d/%Y - %H:%M:%S');

проблема в том, что в IE такого метода нет


Автор: Роман Сергеевич (не зарегистрирован), дата: 9 сентября, 2012 - 22:46
#permalink

Вот, ребятки, набросал функцию, добавляющую требуемый функционал toLocaleFormat для тех браузеров где его нет (то же касается и nodejs):

Date.prototype.toLocaleFormat = function(format) {
	var f = {y : this.getYear() + 1900,m : this.getMonth() + 1,d : this.getDate(),H : this.getHours(),M : this.getMinutes(),S : this.getSeconds()}
	for(k in f)
		format = format.replace('%' + k, f[k] < 10 ? "0" + f[k] : f[k]);
	return format;
};

И вот так вот можно форматировать локальную дату:

new Date().toLocaleFormat('%d.%m.%y %H:%M:%s')

Автор: Гость (не зарегистрирован), дата: 2 октября, 2012 - 18:59
#permalink

>>>
гм... а круто получилось!

только вместо =for(k in f)= нужно поставить =for(var k in f)= - чтоб проблем с глобалом не было...


Автор: Гость (не зарегистрирован), дата: 9 декабря, 2012 - 03:40
#permalink

Спасибо, хорошая идея и очень полезный код!
Можно добавлять свои модификаторы и подставлять, например, названия месяцев из дополнительного массива по индексу getMonth.


Автор: Внезапный Гость (не зарегистрирован), дата: 18 апреля, 2013 - 15:52
#permalink

+
this.getYear() + 1900 лучше изменить на this.getFullYear() чтобы не было проблем при использовании разных браузеров


Автор: Михаил Кириченко (не зарегистрирован), дата: 24 января, 2014 - 12:22
#permalink

формат %y = 14; %Y = 2014
А также с учётом предложенных выше улучшений:

if(!Date.prototype.toLocaleFormat){
	Date.prototype.toLocaleFormat = function(format) {
		var f = {
			Y : this.getFullYear(), 
			y : this.getFullYear()-(this.getFullYear()>=2e3?2e3:1900), 
			m : this.getMonth() + 1,
			d : this.getDate(),
			H : this.getHours(),
			M : this.getMinutes(),
			S : this.getSeconds()
		}, k;
		for(k in f) 
			format = format.replace('%' + k, f[k] < 10 ? "0" + f[k] : f[k]);
		return format;
	}
}

 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum