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)