使用JavaScript将办公时间转换为当地时间

edt*_*edt 5 javascript time timezone datetime

如何使用JavaScript将这样的消息添加到网页:

我们的办公时间是太平洋标准时间上午9点至下午5点(09:00 - 17:00).

在你的时区,那是WWxx - YYzz(AA:00 - BB:00).

哪里:

  • "WW"和"YY"被转换为"小时"(12小时制)的正确值.

  • "xx"和"zz"被转换为"am"或"pm".

  • "AA"和"BB"被转换为"小时"的适当值(24小时制).

所以...最终输出的一个例子是:

我们的办公时间是太平洋标准时间上午9点至下午5点(09:00 - 17:00).

在您的时区,即上午12点至早上8点(00:00 - 08:00).

Anu*_*rag 4

JavaScript 提供了一种toLocaleTimeString关于日期对象的方法,您可以使用该方法根据用户的区域设置设置时间格式。然而,这会遇到对于您的需求来说过于具体的问题,因为它将显示完整的时间,包括小时、分钟、秒,以及可选的 AM/PM 指示符在使用它的地方。

06:42:12 PM // 12 hour
18:42:12    // 24 hour
Run Code Online (Sandbox Code Playgroud)

请注意,您没有显示翻译后的当地时间的分钟,这可能是一个问题,因为对您来说上午 9 点可能对某人来说是下午 4: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).
Run Code Online (Sandbox Code Playgroud)

您已经知道当地时间。要获取站点访问者的本地时间,请获取任意给定日期办公室开始和关闭时间的 unix 时间戳。假设这些时间戳是:

1279401823511 // start
1279430623511 // end
Run Code Online (Sandbox Code Playgroud)

只需使用这些时间创建一个日期对象,然后为用户设置时间格式即可。

var open = new Date(1279401823511);
var close = new Date(1279430623511);
Run Code Online (Sandbox Code Playgroud)

编写一个函数来获取两种 12/24 小时格式的日期很简单。请参阅此参考。我将使用Date.JStoString中的函数,因为它让生活变得更轻松。

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)    
Run Code Online (Sandbox Code Playgroud)