一尘不染

JavaScript使用设置的时区创建日期而不使用字符串表示形式

javascript

我有一个网页,其中有三个下拉菜单,分别是日,月和年。如果我使用Date带数字的JavaScript
构造函数,那么我会得到一个Date当前时区的对象:

new Date(xiYear, xiMonth, xiDate)

输入正确的日期,但由于夏令时,它认为该日期为GMT + 01:00。

这里的问题是,我随后将其传递Date给Ajax方法,并且在服务器上反序列化日期时,日期已转换为GMT,因此浪费了一个小时,使一天倒退了一个小时。现在,我可以将日期,月份和年份分别传递给Ajax方法,但是似乎应该有更好的方法。

公认的答案为我指明了正确的方向,但是使用setUTCHours()本身就发生了变化:

Apr 5th 00:00 GMT+01:00

Apr 4th 23:00 GMT+01:00

然后,我还必须设置UTC日期,月份和年份,最后以

Apr 5th 01:00 GMT+01:00

这就是我想要的。


阅读 262

收藏
2020-04-25

共1个答案

一尘不染

使用.setUTCHours()它可以实际以UTC时间设置日期,这将使您可以在整个系统中使用UTC时间。

但是,除非指定日期字符串,否则不能在构造函数中使用UTC进行设置。

使用new Date(Date.UTC(year, month, day, hour, minute, second))可以从特定的UTC时间创建日期对象。

2020-04-25