Date.parse(int)在javascript中返回true

时间:2017-07-11 10:56:00

标签: javascript angularjs date

我需要检查日期是否有效且不是数字或类似的东西:

 function isDate(date) { 
        return (new Date(date) != "Invalid Date") && !isNaN(new Date(date)) && !angular.isNumber(parseInt(date));
    }

如果date是数字,则此方法可行,但如果datedatetime,则会因为angular.isNumber(parseInt(date)为真而导致错误

例如,如果此方法需要"1989-02-20T22:00:00Z",则true如果"6666"则返回false,然后class Test: def __init__(self): self.var = 1 otherVar = 2 def myPrinter(self): print self.__dict__ # Prints {'var': 1} print self.var print self.otherVar # Doubt !! print self.__dict__ # Prints {'var': 1} ob = Test() ob.myPrinter()

2 个答案:

答案 0 :(得分:0)

我通过以下方式解决了这个问题:

function isValidDate(date) {
        var regexp = new RegExp("(19|20)[0-9][0-9]-(0[0-9]|1[0-2])-(0[1-9]|([12][0-9]|3[01]))T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]");
        return regexp.exec(date);
    }

答案 1 :(得分:0)

不需要&& !angular.isNumber(parseInt(date))部分,如果parseInt(date)返回NaN,则会给出错误的结果。

您可以使用以下内容:

function isDate(date) { 
    return (new Date(date) != "Invalid Date") && !isNaN(new Date(date));
}

这会给你预期的结果,这里有一些测试:

isDate("1989-02-20T22:00:00Z");
true
isDate("1989-02-20T22:00:Z");
false
isDate("1989-02-20T00:00Z");
true
isDate("1989-02-20E00:00Z");
false