如何在javascript中验证时间戳

pra*_*ant 19 javascript validation timestamp

如何使用javascript和时间戳验证时间戳以接受多种格式,例如YYYY-MM-DD HH:mm:ss.S,YYYY-MM-DD HH:mm:ss AM/PM.

Jør*_*gen 44

您可以验证字符串是否是这样的有效时间戳:

var valid = (new Date(timestamp)).getTime() > 0;

var valid = (new Date('2012-08-09')).getTime() > 0; // true
var valid = (new Date('abc')).getTime() > 0; // false
Run Code Online (Sandbox Code Playgroud)

  • 注意:这将返回 true,日期字符串为“4”,这在技术上是有效的时间戳,但在您的应用程序上下文中可能不是有效日期。 (3认同)
  • 谢谢,但是如果输入格式与解析器不兼容,则必须提前转换。 (2认同)
  • 在if语句中使用它时我相信你甚至可以删除> 0并且只使用if((new Date(timestamp)).getTime()){console.log("这是一个约会!"); } (2认同)

小智 6

每个有效数字都是一个时间戳。如果它满足有效整数的条件,那么它也将满足有效时间戳的条件。

时间戳 = 自 1970/01/01 以来的毫秒数


Sri*_*vas 5

var d = Date.parse(your_timestamp);
Run Code Online (Sandbox Code Playgroud)

d应该是一个有效的数字而不是 NaN。

参考: http: //www.w3schools.com/jsref/jsref_parse.asp

  • -1 W3Schoola 很糟糕,并且 [Date.parse](http://ecma-international.org/ecma-262/5.1/#sec-15.9.4.2) 依赖于实现,因此非常不可靠。应手动解析日期字符串。 (3认同)

Hri*_*mov 5

@Jørgen 的解决方案很好,但是如果您在January 1, 1970时间戳之前有一个日期,它将是一个负数,但也是一个有效的时间戳。

function isValidTimestamp(_timestamp) {
    const newTimestamp = new Date(_timestamp).getTime();
    return isNumeric(newTimestamp);
}

function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
Run Code Online (Sandbox Code Playgroud)

我从以下 SO 答案中获取的数字验证

例如:

isValidTimestamp('12/25/1965') // true
Run Code Online (Sandbox Code Playgroud)