Javascript 新日期转换无效日期,可以';不能正确地验证日期
我的问题是:Javascript 新日期转换无效日期,可以';不能正确地验证日期,javascript,Javascript,我的问题是: new Date('02/30/2000') Javascript转换为: Wed Mar 01 2000 00:00:00 GMT-0300 (Local Standard Time) 如果javascript继续自动“更正”日期,我无法通过这种方式验证日期。 我使用了isNaN来检查日期是否有效,但我想它永远不会像我想的那样工作。 如何解决这个问题?您描述的行为正是JavaScriptDate对象的工作方式。对它的描述如下: 注意:当Date被调用为具有多个参数的构造函数时
new Date('02/30/2000')
Javascript转换为:
Wed Mar 01 2000 00:00:00 GMT-0300 (Local Standard Time)
如果javascript继续自动“更正”日期,我无法通过这种方式验证日期。我使用了
isNaN
来检查日期是否有效,但我想它永远不会像我想的那样工作。如何解决这个问题?您描述的行为正是JavaScript
Date
对象的工作方式。对它的描述如下:
注意:当Date被调用为具有多个参数的构造函数时,如果值大于其逻辑范围(例如,提供13作为月值或70作为分钟值),则将调整相邻值。例如,新日期(2013,13,1)等同于新日期(2014,1,1),两者都为2014-02-01创建了一个日期(请注意,月份以0为基础)。与其他值类似:新日期(2013,2,1,0,70)等同于新日期(2013,2,1,1,10),这两个日期都为2013-03-01T01:10:00创建了一个日期
没有内置的方法来解决此行为。但是,有些库是为了解决这个问题和Date对象的其他问题而编写的。具体而言,考虑:
您描述的行为正是JavaScript
Date
对象的工作方式。对它的描述如下:
注意:当Date被调用为具有多个参数的构造函数时,如果值大于其逻辑范围(例如,提供13作为月值或70作为分钟值),则将调整相邻值。例如,新日期(2013,13,1)等同于新日期(2014,1,1),两者都为2014-02-01创建了一个日期(请注意,月份以0为基础)。与其他值类似:新日期(2013,2,1,0,70)等同于新日期(2013,2,1,1,10),这两个日期都为2013-03-01T01:10:00创建了一个日期
没有内置的方法来解决此行为。但是,有些库是为了解决这个问题和Date对象的其他问题而编写的。具体而言,考虑:
以下是您如何做到这一点:
var ValidDate = function (string) {
var dateParts = string.match(/(\d{2})\/(\d{2})\/(\d{4})/),
year = dateParts[3],
month = dateParts[1],
day = dateParts[2];
var jsDate = new Date(string);
if (year != jsDate.getFullYear() || month != jsDate.getMonth() + 1 || day != jsDate.getDate()) {
return NaN;
}
return jsDate;
}
console.log(ValidDate("01/05/1989")); // => Thu Jan 05 1989 ...
console.log(ValidDate("40/05/2010")); // => NaN
console.log(ValidDate("05/40/2000")); // => NaN
以下是您如何做到这一点:
var ValidDate = function (string) {
var dateParts = string.match(/(\d{2})\/(\d{2})\/(\d{4})/),
year = dateParts[3],
month = dateParts[1],
day = dateParts[2];
var jsDate = new Date(string);
if (year != jsDate.getFullYear() || month != jsDate.getMonth() + 1 || day != jsDate.getDate()) {
return NaN;
}
return jsDate;
}
console.log(ValidDate("01/05/1989")); // => Thu Jan 05 1989 ...
console.log(ValidDate("40/05/2010")); // => NaN
console.log(ValidDate("05/40/2000")); // => NaN
谁说了关于JQuery或日期选择器的事?我认为使用JQuery比使用一个全新的资产来验证日期要好。谁说了关于JQuery或日期选择器的事?我认为使用JQuery比使用全新的资产来验证日期要好
var ValidDate = function (string) {
var dateParts = string.match(/(\d{2})\/(\d{2})\/(\d{4})/),
year = dateParts[3],
month = dateParts[1],
day = dateParts[2];
var jsDate = new Date(string);
if (year != jsDate.getFullYear() || month != jsDate.getMonth() + 1 || day != jsDate.getDate()) {
return NaN;
}
return jsDate;
}
console.log(ValidDate("01/05/1989")); // => Thu Jan 05 1989 ...
console.log(ValidDate("40/05/2010")); // => NaN
console.log(ValidDate("05/40/2000")); // => NaN