Как может я использовать 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).
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)