Javascript new Date()接受月底之后的日期

Javascript new Date() accepts dates beyond end of month

本文关键字:之后 日期 new Date Javascript      更新时间:2023-09-26

我使用JavaScipt的new Date(datestring)来解析IE11上的用户输入。

具体的代码行是

var date = new Date(enteredText);

它接受day字段的任何参数-例如,5/50/1997解析为June 19, 1997,因为6月19日将是5月的第50天

有没有办法强迫它不这样做,只接受真实的日期?

您必须自己解析字符串以验证日期是否有效。要做到这一点,您需要用delimiter(在这种情况下为"/")分割字符串,并检查每一天/月/年是否有效。

你把这个验证放在哪里完全取决于你。您可以使用Date.prototype.constructor = function(){/*your code here*/}覆盖Date构造函数,也可以创建一个自定义函数,在实例化新日期function validateDate(str){/*your code here*/}之前验证字符串。后者可能是您的最佳选择。

您可以拆分由'/'或根据您的分隔符传递的参数,并手动检查日期、月份和年份是否有效,然后将其传递给日期函数