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

时间:2010-07-17 17:52:19

标签: javascript datetime time timezone

如何使用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)。

1 个答案:

答案 0 :(得分:4)

JavaScript在日期对象上提供了toLocaleTimeString方法,您可以根据用户的区域设置来设置时间格式。然而,这会遇到过于特定于您的需求的问题,因为它会在使用它的地方显示包括小时,分钟,秒和AM / PM指示符的全部时间。

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

请注意,您没有显示翻译的当地时间的分钟数,这可能是一个问题因为上午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).

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

1279401823511 // start
1279430623511 // end

只需使用这些时间创建日期对象,然后格式化用户的时间。

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

编写一个函数以12/24小时格式获取日期很简单。 See this作为参考。我将使用Date.JS中的toString函数,因为它可以让生活变得更轻松。

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)