Использование JavaScript для применения различий часовых поясов пользователей? - PullRequest
0 голосов
/ 28 сентября 2011

Я подумал о том, чтобы позволить моим пользователям выбирать собственный часовой пояс в моем приложении, но как насчет того, чтобы вместо этого сделать его автоматическим с некоторым JavaScript?

Какой-то псевдокод:
Дата печатается на сервере как <p class="utcDate">2011-09-28 11:00 UTC</p>. Когда пользователь загружает страницу, jquery просматривает все элементы с классом utcDate и заменяет дату / время в формате UTC датой, в которой применяется разница между UTC и локальным часовым поясом пользователя.

Что я должен знать при этом? Есть ли какие-либо очевидные недостатки в этом?

Спасибо

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Если вы сделаете это (в этом нет ничего плохого), имейте в виду, что это может повлиять на воспринимаемое время загрузки страницы, если задействовано много элементов.

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

Альтернативно вместо вывода даты UTC и последующего ее изменения, почему бы просто не вывести js.snippet, который запишетправильная дата в строке через document.write?- Это будет быстрее при загрузке страницы.

Если это везде одна и та же дата / время, когда вы используете ее на странице, вы можете просто сгенерировать ее один раз с помощью js, а затем просто вывести значение, хранящееся в переменной.

0 голосов
/ 28 сентября 2011

Я бы рекомендовал вместо этого выводить метку времени Unix.Объект js Date не имеет возможности напрямую использовать строку UTC (вам придется анализировать каждый компонент), но он может использовать метку времени с помощью функции setTime .

Объект Date автоматически локализуется в настройках пользователя и может быть приведен непосредственно к строке (хотя это, вероятно, более многословно, чем вы хотели бы: «Ср, Сен 28, 2011 07:03:26 GMT-0400 (Eastern Daylight Time) "), так что вы, вероятно, захотите отформатировать строку самостоятельно:

$('p.utcDate').each(function () {
    var time = new Date();
    time.setTime(this.innerHTML);
    this.innerHTML = time.toDateString();
  });

В качестве дополнительного преимущества toDateString будет обрабатывать локальные соглашения вокруг mdy vs dmy и т. Д.

...