3

我正在开发一个 jQuery 信用卡到期日期验证脚本。信用卡在到期月份的最后一天之后到期。例如,如果卡在 2013 年 8 月到期,那么它可以在 2013 年 8 月 31 日到期。

过去,在服务器端,我通过将当前月份加 1,然后减去 1 天来确定该月的最后一天。

今天我注意到在创建新日期时,如果将 0 应用于 JavaScript Date() 对象的第三个参数,则生成的日期将是月末日期。但我一直无法找到任何在线文档来证实这一观察。

这是一些示例代码。

var month = 10;
var year = 2013;
var expires = new Date(year, month, 0);
alert(expires);

这是我创建的一个 jsFiddle 示例。

这有点令人困惑,因为我认为 JavaScript 月份是从零开始的。我已经在 Chrome、Firefox、IE 和 Safari 中对此进行了测试,并且行为看起来是一致的。返回的日期始终显示该月的最后一天。这看起来像是一个幸运的发现,但我真的很想了解这里发生了什么。

我是否可以安全地使用这种方法来分配月末日期,如果可以,是否有一些在线文档可以指出来确认这一点?谢谢。

4

1 回答 1

4

月份从零开始的。这会在上个月创建一个月底日期。第 10 个月是 11 月,因此在 11 月创建第 0 天的日期会给您 10 月底(第 9 个月)。

也就是说,11 月的第 0 天表示“11 月 1 日之前的一天”,也就是 10 月的最后一天。11 月的第-1 天是 10 月 30 日。

于 2013-07-31T17:47:43.997 回答