.setHours return 错误的时间
.setHours return wrong hours
我正在使用 FullCalendar 2.3.1
和 moment js 2.9.0
,实际上我是这样获取日期的:
var currDateStart = $calendar.fullCalendar('getView').start;
这个return我:
Mon Oct 26 2015 01:00:00 GMT+0100 (ora solare Europa occidentale)
注意:上面的日期是 moment object
因此在下一步中我想将日期转换为 ISO 格式:
currDateStart = new Date(new Date(currDateStart).setHours(0)).toISOString();
我明白了:
2015-10-25T23:00:00.000Z
但结果不正确,原因应该是:
2015-10-25T00:00:00.000Z
错误的日期错误我的日历呈现事件。我做错了什么?
这是当我尝试设置日期时发生的事情,它会将日期转换为 GMT+0530,然后将日期转换为 ISO 字符串
var currDateStarttemp = 'Mon Oct 26 2015 1:00:00 GMT+0100 (ora solare Europa occidentale)';
var currDateStart = new Date(currDateStarttemp).toISOString();
snippet.log("currDateStart " + currDateStart);
currDateStart = new Date(currDateStart).setUTCHours(0)
snippet.log("setHours " + new Date(currDateStart));
currDateStart = new Date(currDateStart).toISOString();
snippet.log("toISOString " + currDateStart);
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
结果正确,符合预期。 ISOString 返回 UTC 日期。注意 2015-10-25T23:00:00.000Z
.
末尾的 Z
您处于 +1 UTC 时区,因此当您设置 setHours(0)
- 它会设置您所在时区的时间,并且 ISOString 返回 UTC(晚 1 小时)。您可以 setHours(1)
对此进行反击,或调整使用输出以期望 UTC 日期(当地时间 - 1 小时)的函数。
我正在使用 FullCalendar 2.3.1
和 moment js 2.9.0
,实际上我是这样获取日期的:
var currDateStart = $calendar.fullCalendar('getView').start;
这个return我:
Mon Oct 26 2015 01:00:00 GMT+0100 (ora solare Europa occidentale)
注意:上面的日期是 moment object
因此在下一步中我想将日期转换为 ISO 格式:
currDateStart = new Date(new Date(currDateStart).setHours(0)).toISOString();
我明白了:
2015-10-25T23:00:00.000Z
但结果不正确,原因应该是:
2015-10-25T00:00:00.000Z
错误的日期错误我的日历呈现事件。我做错了什么?
这是当我尝试设置日期时发生的事情,它会将日期转换为 GMT+0530,然后将日期转换为 ISO 字符串
var currDateStarttemp = 'Mon Oct 26 2015 1:00:00 GMT+0100 (ora solare Europa occidentale)';
var currDateStart = new Date(currDateStarttemp).toISOString();
snippet.log("currDateStart " + currDateStart);
currDateStart = new Date(currDateStart).setUTCHours(0)
snippet.log("setHours " + new Date(currDateStart));
currDateStart = new Date(currDateStart).toISOString();
snippet.log("toISOString " + currDateStart);
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
结果正确,符合预期。 ISOString 返回 UTC 日期。注意 2015-10-25T23:00:00.000Z
.
您处于 +1 UTC 时区,因此当您设置 setHours(0)
- 它会设置您所在时区的时间,并且 ISOString 返回 UTC(晚 1 小时)。您可以 setHours(1)
对此进行反击,或调整使用输出以期望 UTC 日期(当地时间 - 1 小时)的函数。