use*_*130 4 javascript timezone dst timezone-offset momentjs
我正在尝试检查isDST()(如果启用夏令时,则返回true或false)。如果我使用当前日期时间,则效果很好-例如,var isdst = moment()。isDST()对于我的时区返回true。但是,我要做的是先设置时区偏移,然后检查夏令时是否在该时区中处于活动状态。我下面有以下代码。
var isdst = moment('2014-03-28').zone('+01:00');
console.log('daylight savings for +0100 is ' + isdst); //returns true when it should return false
Run Code Online (Sandbox Code Playgroud)
如果您查看+0100时区(欧洲联盟国家)的夏令时,该日期直到2014年3月30日才生效。但是,上面的代码实际上在3月28日才返回true,但实际上不应该(直到2天后)。您可以在http://www.worldtimezone.com/daylight.html上查看其他国家/地区的DST 。
我进行了更多测试,似乎代码在运行时考虑了我自己的时区(美国东部标准)。如果您在上面看到网站,那么东部标准夏令时将从2014年3月9日开始。如果我在3月9日之前的几天测试代码,则返回false(即3月8日)。如果我在3月11日进行测试,则返回true。这告诉我,它没有考虑区域(“ +0100”),而是以某种方式使用了我的时区...为什么?如何设置momentjs日期的时区?我查看了文档(http://momentjs.com/docs/),它说这是正确的方法,但是对我不起作用。
时区与偏移量不同。UTC + 01:00适用于许多不同的时区,有些使用夏时制,有些则不使用。那些使用它的人也不会全部同时应用它。请参阅时区标签Wiki中的 “时区!=偏移” 。
Moment的“区域”功能实际上是用于指定偏移量的。它仍将使用您自己的本地DST规则。
如果要了解其他时区的DST规则,则必须使用moment-timezone附加组件指定该时区。例如:
var tz = 'Europe/Paris'; // or whatever your time zone is
var dt = '2014-05-14 12:34:56'; // or whatever date/time you're working with
moment.tz(dt,tz).isDST() // returns true in this case
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5226 次 |
| 最近记录: |