Преобразуйте Рабочий день в местное время с помощью JavaScript

Как может я использовать JavaScript для добавления сообщения как это к веб-странице:

Наш рабочий день является 9:00 - 17:00 (9:00 - 17:00) PST.

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

Где:

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

  • "xx" и "zz" преобразовываются, или к или к "пополудни".

  • "AA" и "BB" преобразовываются в собственное значение в течение "часа" (на 24-часовых часах).

Таким образом... пример окончательного результата был бы:

Наш рабочий день является 9:00 - 17:00 (9:00 - 17:00) PST.

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

5
задан Jason Plank 23 November 2011 в 14:52
поделиться

1 ответ

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

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

Обратите внимание, что вы не показываете минуты для переведенного местного времени, что может быть проблемой, так как 9:00 для вас может быть 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)    
4
ответ дан 15 December 2019 в 00:48
поделиться
Другие вопросы по тегам:

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