首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Date.js显示时区缩写

使用Date.js显示时区缩写
EN

Stack Overflow用户
提问于 2013-08-07 03:24:04
回答 4查看 5K关注 0票数 5

我有一个读取用户时区并根据用户显示时间的脚本。如何显示时区缩写?

我有一个游戏网站,我们在帖子上写道“我们将在7:00现场直播”。来自世界各地的用户阅读了我们的博客,并希望观看现场直播。我有下面的脚本,它应该读取用户的时区,并根据用户居住的地方显示时间。

代码语言:javascript
代码运行次数:0
运行
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Localtime</title>
  </head>
  <body>
    We'll be playing live at <span class="localtime">7:00PM EDT</span>
    <script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
    <script
      var els = document.getElementsByClassName('localtime');
      for (var i = 0, l = els.length; i < l; i++)
        els[i].innerHTML = 
          Date.parse(els[i].innerHTML).toLocaleString();
    </script>
  </body>
</html>

如何在时间旁边显示特定于用户的时区缩写,以便用户知道时间是基于其时区的?

EN

回答 4

Stack Overflow用户

发布于 2013-08-07 06:20:41

以下是一些事情:

  • date.js has been abandoned.您可能应该避免使用它。
  • 时区缩写是不明确的。参见this list.
  • For示例,如果你输出为"CST“-这可能意味着”中央标准时间“,”中国标准时间“或”古巴标准时间“。
  • 据我所知,没有任何库可以给你当地时区的缩写。
  • 你通常可以用Date().toString()看到一些地区信息,但它高度依赖于浏览器。它可能是一个缩写,或者是时区的本地化全名或id,或者根本不显示。
  • 也许你最好只显示偏移量。这至少是标准化的。您可以使用原始的JavaScript或更简单的使用moment.js.
  • In来完成此操作,因为您提供的代码没有输入日期,因此您将很难将其锁定到特定的时区。您假设"EDT“是所有浏览器中的日期解析器都可以识别的东西,但事实并非如此。
  • 最好的方法是从精确的时刻开始(使用UTC或偏移),然后将其呈现为正确的格式。例如,(使用moment.js)

var m= moment("2013-08-06T19:00:00-04:00");//这是美国东部时间下午7:00 var s= m.format("HH:mm (UTCZZ)");//例如:"16:00 (UTC-0700)"

票数 3
EN

Stack Overflow用户

发布于 2013-09-05 07:25:52

这里提供了DateJS核心代码的更新版本(并将在未来修复开放的错误):

https://github.com/abritinthebay/datejs/

然而,听起来您只是在寻找DateJS的format或toString方法。

例如:

代码语言:javascript
代码运行次数:0
运行
复制
var tmp = Date.parse("2013-09-05T22:40:00Z");
var time = tmp.format("g:i A T");

这将留下字符串"3:40 PM PDT“的时间

这不依赖于内部浏览器问题,因为DateJS根据日期的偏移量执行查找(该偏移量不会因浏览器而改变)。

票数 2
EN

Stack Overflow用户

发布于 2013-12-03 01:18:59

bigeasy的Timezone似乎是一个解决方案,它给出了时区缩写,尽管@matt-johnson暗示了它的缩写are not standardized

使用Node.js尝试时区的示例(遵循walk-through):

代码语言:javascript
代码运行次数:0
运行
复制
$ npm install timezone
$ node
> tz = require('timezone');
[Function]
> us = tz(require("timezone/America"));
[Function]
> us(us("2013-12-11 03:00"), "America/Detroit", "%Z")
'EST'
> us(us("2013-12-11 03:00"), "America/Los_Angeles", "%Z")
'PST'
> us(us("2013-10-11 03:00"), "America/Los_Angeles", "%Z")
'PDT'

Moment.js有一个entry point "hook" for time zone abbreviations,但据我所知,还没有一个库可以利用这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18088764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档