Предположим, у меня есть дата, которую я могу представить в культурно-инвариантном формате (ISO 8601).Локализовать даты в браузере?
Я заеду 6 июля 2009, 3:54 вечера UTC время в Париже, а.к.а. 5:54 вечера по местному времени в Париже наблюдения сбережения дневного света.
2009-07-06T15: 54: 12,000 + 02: 00
OK ... есть ли скрытая жемчужина разметки, которая будет сказать браузеру, чтобы преобразовать эту строку в локализованной версии Это?
Ближайшим решением является использование Date.prototype.toLocaleString JavaScript (в). Это, безусловно, неплохая работа, но она может быть медленной итерации в течение многих дат, и она полагается на Javascript.
Есть ли HTML, CSS, XSLT, или в противном случае семантическая разметка, что браузер будет распознавать и автоматически создает корректную локализованную строку?
Edit:
Метод В настоящее время я использую заменить текст в HTML-элемента с локализованной строки:
Начиная с:
<span class="date">2009/07/06 15:54:12 GMT</span>
Использование Javascript (с JQuery):
var dates = $("span.date", context);
// use for loop instead of .each() for speed
for(var i=0,len=dates.length; i < len; i++) {
// parse the date
var d = new Date(dates.eq(i).text());
// set the text to the localized string
dates.eq(i).text(d.toLocaleString());
}
С практической точки зрения, это делает текст «flash» новым значением при запуске Javascript, и мне это не нравится.
С точки зрения принципов, я не понимаю, почему мы должны это делать - браузер должен иметь возможность локализовать стандартные вещи, такие как валюта, даты, числа, если мы помечаем ее как таковую.
Следить за вопрос: Почему браузеры/веб не имеют такую простую функцию - взять стандартный элемент данных, и отформатировать его в соответствии с настройками клиента?
Я не знаю, что так или иначе, используя прямые языки разметки. Я почти уверен, что у вас будет какой-то скрипт. – Peter