Javascript Date()函数,异常

时间:2015-06-11 18:42:47

标签: javascript date momentjs epoch

我最近遇到了javascript中不可靠日期的问题。

以下是您可以在自己的浏览器控制台中测试的示例,以重现问题。

s = new Date(0); s.setYear(2015); s
//Thu Dec 31 2015 18:00:00 GMT-0600 (Central Standard Time)

s.setMonth(5); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)

s.setMonth(6); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)

如你所见,设定5月(6月)与6月(7月)相同,均为7月返回。 这可以通过使用 - new Date()而不是new Date(0)来解决。

我只想了解发生这种情况的原因。 重申,想明白为什么。 任何人都可以描述这种行为吗?

https://wordpress.org/support/topic/front-end-submit-events-off-by-1month?replies=5#post-7059058

2 个答案:

答案 0 :(得分:2)

  • 日期最初 2015年12月31日
  • s.setMonth(5)将月份设置为6月(月份为零索引),因此您将日期设置为 2015年6月31日
  • 没有这样的日期(即6月有30天),所以它会翻到 2015年7月1日
  • 使用s.setMonth(6)将月份设置为7月无效,因为日期已经是7月了。

new Date()使用当前日期(今天不是第31天),因此不会发生这种31比1的翻转。

答案 1 :(得分:1)

此处讨论了问题的原因:javascript new Date(0) class shows 16 hours?

因此,在您的情况下,不要在Date();

中传递0



$('.show').click(function () {
    $(this).closest('.comment-parent').find('.watch').show('slow');
});