Локализовать даты на браузере?

Первое, что пришло на ум:

  1. Они осуществляют плотное соединение. Если Ваш одиночный элемент находится на различном блоке, чем его пользователь, блок использования никогда не может функционировать без блока, содержащего одиночный элемент.
  2. Они допускают круговые зависимости, например, блок A может иметь одиночный элемент с зависимостью от блока B, и блок B может использовать одиночный элемент A блока. Все, не повреждая компилятор.
5
задан Jeff Meatball Yang 9 July 2009 в 17:29
поделиться

5 ответов

I use toLocaleString() on my site, and I've never had a problem with the speed of it. How are you getting the server date into the Date object? Parsing?

I add a comment node right before I display the date as the server sees it. Inside the comment node is the date/time of that post as the number of milliseconds since epoch. In Rails, for example:

<!--<%= post.created_at.to_i * 1000 %>-->

If they have JS enabled, I use jQuery to grab those nodes, get the value of the comment, then:

var date = new Date();
date.setTime(msFromEpoch);
// output date.toLocaleString()

If they don't have JS enabled, they can feel free to do the conversion in their head.

If you're trying to parse the ISO time, that may be the cause of your slowness. Also, how many dates are we talking?

2
ответ дан 14 December 2019 в 01:14
поделиться

The language and the user's locale should be sent on the HTTP header. You can use those to create the correct date format server-side to be displayed to the user. However, this is often undesirable because many users completely ignore their locale settings in their OS and/or browser. So, you may be feeding USA style timestamps to New Zealanders.

I liked the trick posted in the comment above, but it sounds like a QA headache, since you could be dealing with a large number of clients that implement timestamps in very different ways.

The most effective solution I have seen, is to simple provide a panel to allow your users to choose what time format they like. Some users even ****gasp**** like ISO formats. Then you do the time format conversion server side. If your application language does not have good locale to timezone formatting mapping, check your database. Many databases provide locale-based customized timezone formatting as well.

1
ответ дан 14 December 2019 в 01:14
поделиться

К сожалению, нет.

HTML и CSS строго используются для представления, как таковые, нет встроенных «умных» средств для изменения способа отображения.

Лучше всего было бы использовать язык на стороне сервера (например, .NET, Python и т. Д.) Для вывода дат в HTML в том формате, в котором вы хотите, чтобы они показывались вашему пользователю.

2
ответ дан 14 December 2019 в 01:14
поделиться

Невозможно сделать это с помощью HTML, у него нет смарт-тегов, которые могли бы принимать подобные решения. Он строго презентационный. Однако мне интересно, есть ли в HTML5 тег для чего-то вроде этого ...

В любом случае, как я понимаю, у вас есть 3 варианта:

  1. Придерживайтесь пути Javascript. На этом веб-сайте есть вопросы с более подробной информацией, например Как мне отобразить дату / время в формате локали пользователя и смещение времени? и Как я могу определить часовой пояс веб-пользователя?

  2. Попробуйте использовать геолокацию. То есть сценарий на стороне сервера запускает запрос к одной из многих служб геолокации при первом посещении страницы пользователем, чтобы попытаться угадать, где находится пользователь. Обратной стороной является то, что он будет ошибаться примерно в 10% случаев, поэтому он не намного лучше, чем рыночная доля, которую Javascript может вам предоставить .... (в общем, не очень хороший метод ...)

  3. Спросите пользователя! Вы увидите, что большинство веб-сайтов, которые хотят показать вам индивидуальный подход, будут спрашивать вас об этом, потому что это просто невозможно узнать. В качестве альтернативы вы можете обернуть вопрос вокруг тегов

2
ответ дан 14 December 2019 в 01:14
поделиться

. В Dojo есть довольно хорошие локализации для дат и валют . Использование этого метода также позволяет вам выбирать различные форматы (например, короткую дату или длинную дату) и принудительно устанавливать локали.

2
ответ дан 14 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: