setUTCHours 将一个小时添加到传递给函数的时间

hus*_*ian 2 javascript asp.net-mvc jquery datetime utc

我试图分别从日期和时间字符串创建一个 DateTime 对象。然而 setUTCHour 函数不断向时间添加一个小时,我知道英国的时间是 GMT + 1 但是由于时间已经存储在 UTC 时间中,我不想向时间添加一个小时..

下面是这个的代码..

var eventStartDate = $('#EventStartDate').val();  // value:  "10/10/2016"
var eventStartTime = $('#EventStartTime').val();  // value:   "10:00"
var eventStartTimeArr = eventStartTime.split(":"); 

if (eventStartTimeArr.length = 2) {
    eventStart.setUTCHours(eventStartTimeArr[0], eventStartTimeArr[1], 00, 00)
}
Run Code Online (Sandbox Code Playgroud)

这显示活动开始时间为“10/10/2016 11:00”,比预期值多一小时。这应该是“10/10/2016 10:00”。

usa*_*nds 6

setUTCHours基本上setHours使用 UTC 偏移量。

例如,如果您位于 GMT-7 时区,则使用setUTCHours(10, 0, 0, 0)相当于使用setHours(10 + (-7 /* local time offset */), 0, 0, 0)

如果您已经设置了 UTC 时间,则无需重新应用该偏移量(因为对象的本地时间现在是 UTC 时间)。用于setHours直接应用小时数。

  • 日期应以 UTC 形式存储在数据库中并以 UTC 形式检索。它们可以通过 Javascript 在浏览器中与本地时区进行转换。这允许跨多个时区获得一致的数据。 (3认同)