Преобразование часов офиса в местное время с использованием JavaScript - PullRequest
5 голосов
/ 17 июля 2010

Как я могу использовать JavaScript, чтобы добавить подобное сообщение на веб-страницу:

Наши часы работы с 9:00 до 17:00 (09:00 - 17:00)PST.

В вашем часовом поясе это WWxx - YYzz (AA: 00 - BB: 00) .

Где:

  • "WW" и "YY" преобразуются в правильные значения для "часа" (на 12-часовых часах).

  • «xx» и «zz» преобразуются в «am» или «pm».

  • «AA» и «BB»« преобразуются в правильное значение для« часа »(на 24-часовых часах).

Итак ... пример окончательного вывода будет:

Наш офис работает с 9:00 до 17:00 (09:00 - 17:00) PST.

В вашем часовом поясе это 12:00 - 8:00 (00:00 - 08:00).

1 Ответ

4 голосов
/ 18 июля 2010

JavaScript предоставляет метод toLocaleTimeString для объектов даты, который можно использовать для форматирования времени в соответствии с языковым стандартом пользователя.Это, однако, страдает от проблемы того, чтобы быть слишком конкретным для ваших нужд, так как будет отображать полное время, включая часы, минуты, секунды и, необязательно, указатель AM / PM в местах, которые его используют.

06:42:12 PM // 12 hour
18:42:12    // 24 hour

Обратите внимание, что вы не отображаете минуты для переведенного местного времени, что может быть проблемой, так как 9 утра для вас могут быть 16:30 для кого-то.Вот измененное решение того, что вы перечислили.

Our office hours are 9:00am - 5:00pm (09:00 - 17:00)
In your timezone, that's 07:30am - 3:30pm (07:30 - 15:30).

Вы уже знаете свое местное время.Чтобы узнать местное время посетителя сайта, получите временную метку Unix, когда ваш офис начинается и закрывается на любой день.Допустим, эти временные метки:

1279401823511 // start
1279430623511 // end

Просто создайте объект даты с этим временем, а затем отформатируйте время для пользователя.

var open = new Date(1279401823511);
var close = new Date(1279430623511);

Написание функции для получения даты вОба формата 12/24 часа просты. См. для справки.Я буду использовать функцию toString из Date.JS , так как она немного облегчит жизнь.

var localTime = "In your timezone, that's {a} - {b} ({c} - {d})";
var map = {
    '{a}': open.toString('h:mmtt'),
    '{b}': close.toString('h:mmtt'),
    '{c}': open.toString('HH:mm'),
    '{d}': close.toString('HH:mm')
};
for(var p in map) {
    localTime = localTime.replace(p, map[p]);
}
console.log(localTime); 
"In your timezone, that's 2:23PM - 10:23PM (14:23 - 22:23)    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...