如何使用Javascript检测特定时区是否在DST中

时间:2013-10-09 17:48:02

标签: javascript timezone dst

我需要在中心Timzone显示当前时间,无论客户的当地时区如何,为此,我需要知道中央时区是UTC-6还是UTC-5

在Javascript中处理夏令时的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

首先,您需要一个实现IANA时区数据库的JavaScript库。我列出了其中几个here

美国中部时间的IANA区域名称为America/Chicago

如果您想知道的是该区域中的当前时间,并且适当地应用了DST,那么所有这些库都将某种形式作为主要用例。

最简单的例子可能就是moment-timezone,您只需执行此操作:

var nowInCentralTime = moment().tz("America/Chicago");
var stringToOuput = nowInCentralTime.format("LLL");

(当然,您可以应用您想要的任何格式。有关详细信息,请参阅moment.js文档。

如果你想知道这是否是DST,你可以这样做:

var centralIsInDST = nowInCentralTime.isDST();

答案 1 :(得分:0)

在当地区域明确不是 DST 时找到偏移量

var zone,
    z1 = new Date(2013, 0, 1).getTimezoneOffset(),
    z2 = new Date(2013, 5, 1).getTimezoneOffset();
if (z2 < z1) // northern hemisphere
    zone = z1;
else         // southern hemisphere
    zone = z2;

答案 2 :(得分:0)

我最终在服务器上执行此操作并在检查此帖子后将其传递给客户端: Daylight saving time and time zone best practices

Never trust client datetime. It may very well be incorrect.