Javascript 法定UTC日期
我一直在寻找一种在JS应用程序中保持UTC日期的方法;但是,在任何情况下,日期的Javascript 法定UTC日期,javascript,node.js,date,Javascript,Node.js,Date,我一直在寻找一种在JS应用程序中保持UTC日期的方法;但是,在任何情况下,日期的getTimezoneOffset()都不会返回0,我想这应该是事实——这在UTC和本地TZ之间确定日期时似乎很重要 请看下面我尝试过的例子,提前感谢您的帮助 var TheDate = new Date( Date.UTC(2012, 10, 5) ); console.log(TheDate.getTimezoneOffset()) // => 300 (for me) ECAMScript日期本质上是U
getTimezoneOffset()
都不会返回0
,我想这应该是事实——这在UTC和本地TZ之间确定日期时似乎很重要
请看下面我尝试过的例子,提前感谢您的帮助
var TheDate = new Date( Date.UTC(2012, 10, 5) );
console.log(TheDate.getTimezoneOffset()) // => 300 (for me)
ECAMScript日期本质上是UTC,只是ECMAScript历元的偏移量(1970-01-01T00:00:00Z的时间值,以毫秒为单位),仅此而已。它们没有相关的时区 使用主机时区偏移:
new Date(Date.UTC(2012, 10, 5))
创建2012-11-05T00:00:00Z的日期。在该日期调用getTimezoneOffset将返回等效本地日期和时间的主机系统偏移量,而不是创建日期时使用的偏移量
如果不使用库(您编写的库或许多现有库之一),就无法将时区与日期关联
在第二个示例中:
moment().utc()
只需设置一个标志,告诉moment.js方法在任何情况下都使用UTC。然后使用:
....toDate().getTimezoneOffset()
返回一个日期对象,然后获取该日期的主机系统时区偏移量,就像执行以下操作一样:
new Date().getTimezoneOffset()
如果您只想使用UTC,那么对所有事情都使用UTC方法,完全忽略时区(我认为这是您想要做的)。ECAMScript日期本质上是UTC,只是ECMAScript历元的偏移量(1970-01-01T00:00:00Z的毫秒时间值),仅此而已。它们没有相关的时区 使用主机时区偏移:
new Date(Date.UTC(2012, 10, 5))
创建2012-11-05T00:00:00Z的日期。在该日期调用getTimezoneOffset将返回等效本地日期和时间的主机系统偏移量,而不是创建日期时使用的偏移量
如果不使用库(您编写的库或许多现有库之一),就无法将时区与日期关联
在第二个示例中:
moment().utc()
只需设置一个标志,告诉moment.js方法在任何情况下都使用UTC。然后使用:
....toDate().getTimezoneOffset()
返回一个日期对象,然后获取该日期的主机系统时区偏移量,就像执行以下操作一样:
new Date().getTimezoneOffset()
如果您只想使用UTC,那么对所有事情都使用UTC方法,完全忽略时区(我认为这是您想要做的)。当您使用
.toString()格式化日期时,getTimezoneOffset()
是偏移量。当您使用.toutString()
格式化日期时,这是毫无意义的。请注意,它的值根本不是日期对象的属性,而是您环境的区域设置,您无法对其进行任何更改。从~“返回时区差,以分钟为单位,从当前区域设置(主机系统设置)到UTC”,因此,我应该理解日期没有时区,这台机器有一个时区。@Bergi你可以做点什么来改变它process.env.TZ='UTC'
@Paul我想这就是我要做的,谢谢你的建议!getTimezoneOffset()
是使用.toString()
格式化日期时的偏移量。当您使用.toutString()
格式化日期时,这是毫无意义的。请注意,它的值根本不是日期对象的属性,而是您环境的区域设置,您无法对其进行任何更改。从~“返回时区差,以分钟为单位,从当前区域设置(主机系统设置)到UTC”,因此,我应该理解日期没有时区,这台机器有一个时区。@Bergi你可以做点什么来改变它process.env.TZ='UTC'
@Paul我想这就是我要做的,谢谢你的建议!