javascript查找闰年

新手上路,请多包涵

当我有 2 月的时候,如何让下面的代码工作?目前它正在到达一天然后停止,然后再到达 if 以确定它是否是闰年。

  if (month == 2) {
    if (day == 29) {
        if (year % 4 != 0 || year % 100 == 0 && year % 400 != 0) {
            field.focus();
             field.value = month +'/' +  '';
        }
    }
    else if (day > 28) {
        field.focus();
             field.value = month +'/' +  '';
    }
}

原文由 Juan Almonte 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 221
1 个回答

Date 对象 用于日期时间的东西更安全,例如

isLeap = new Date(year, 1, 29).getMonth() == 1

由于人们一直在问这究竟是如何工作的,所以它与 JS 如何从年月日计算日期值有关(详情请见 此处)。基本上,它首先计算该月的第一天,然后向其添加 N -1 天。所以当我们要求非闰年的 2 月 29 日时,结果将是 2 月 1 日 + 28 天 = 3 月 1 日:

 > new Date(2015, 1, 29)
< Sun Mar 01 2015 00:00:00 GMT+0100 (CET)

在闰年,2 月 1 日 + 28 = 29 日:

 > new Date(2016, 1, 29)
< Mon Feb 29 2016 00:00:00 GMT+0100 (CET)

在上面的代码中,我将日期设置为 2 月 29 日,然后查看是否发生了翻转。如果不是(月份仍为1,即二月),则为闰年,否则为非闰年。

原文由 georg 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题