Javascript是否认可闰年

时间:2016-03-04 19:53:26

标签: javascript

我有以下代码片段(实际上我今天使用new Date()获取(2016年3月4日),但它永远不会是3月,所以要做个合理的测试我已经确定了日期明确。

var n = new Date(2016,2,4);
var d = new Date (
  n.getFullYear(),
  n.getMonth(),
  -1,
   6,0,0);
console.log(d.toString());

当n现在(除非它不是),d是我希望成为前一个月最后一天的新日期。我没有得到2016年2月29日上午6点UTC,这是我的预期,而不是2月28日。

这在Chrome和Iceweasel(Firefox)中都有相同的结果。我应该如何找到上个月的最后一天(特别是今年的闰年)

如果重要,我是GMT时区。

2 个答案:

答案 0 :(得分:4)

那是因为天是1,而不是0。

var march4 = new Date(2016, 2, 4);
var feb29 = new Date(
  march4.getFullYear(),
  march4.getMonth(),
  0); // <-- go to the day before the first of the given month
console.log(feb29); // Mon Feb 29 2016 00:00:00 GMT-0700 (Mountain Standard Time)

作为参考,如果您在4月到3月之间采用相同的技巧,那么您将获得3月31日。

var april = new Date(2016, 3, 4);
var march = new Date(
  april.getFullYear(),
  april.getMonth(),
  0);
console.log(march); // Thu Mar 31 2016 06:00:00 GMT-0600 (Mountain Daylight Time)

答案 1 :(得分:1)

事实上,它承认

如果您尝试这样做,它会起作用: Date (2016, 2, 0);

它带给我Mon Feb 29 2016 00:00:00 GMT-0300

而不是-1,尝试0:

var n = new Date(2016,2,1);
var d = new Date (
            n.getFullYear(),
            n.getMonth(),
            0,
            6,0,0);
console.log(d.toString());