将0指定给JavaScript Date()对象的第三个参数是否始终会创建月末日期?
我正在编写jQuery信用卡到期日期验证脚本。信用卡在到期月份的最后一天到期。例如,如果该卡在2013年8月到期,则在2013年8月31日之前一直有效 过去,在服务器端,我通过将当前月份加1,然后减去1天来确定一个月的最后一天 今天我注意到,在创建新日期时,如果将0应用于JavaScript date()对象的第三个参数,则生成的日期将是月末。但我无法找到任何在线文档来证实这一观察结果 下面是一些示例代码将0指定给JavaScript Date()对象的第三个参数是否始终会创建月末日期?,javascript,jquery,validation,date,Javascript,Jquery,Validation,Date,我正在编写jQuery信用卡到期日期验证脚本。信用卡在到期月份的最后一天到期。例如,如果该卡在2013年8月到期,则在2013年8月31日之前一直有效 过去,在服务器端,我通过将当前月份加1,然后减去1天来确定一个月的最后一天 今天我注意到,在创建新日期时,如果将0应用于JavaScript date()对象的第三个参数,则生成的日期将是月末。但我无法找到任何在线文档来证实这一观察结果 下面是一些示例代码 var month = 10; var year = 2013; var expires
var month = 10;
var year = 2013;
var expires = new Date(year, month, 0);
alert(expires);
而且是我创造的
这有点令人困惑,因为我认为在JavaScript中,这几个月是以零为基础的。我已经在Chrome、Firefox、IE和Safari中进行了测试,其行为似乎是一致的。返回的日期始终显示当月的最后一天。这看起来是个幸运的发现,但我真的很想了解这里发生了什么
我是否可以安全地使用这种方法来指定月底日期,如果可以,是否有一些在线文档可供我参考?谢谢。月份是以零为基础的。这将在上个月创建月末日期。第10个月是11月,因此在11月创建日期为0的日期将显示10月底(第9个月)
也就是说,11月的第0天意味着“11月1日之前的一天”,即10月的最后一天。11月的第一天是10月30日。谢谢你的解释。本质上,通过应用0,脚本将减去一天。这是一个方便的快捷方式。@KenPalmer好的-JavaScript日期对象在许多方面受到限制(特别是i18n),但基本行为非常方便。从头开始制作日历(西方日历)真的很容易,因为它为你做了所有的“日期数学”。