【问题标题】:javascript: how to check if a value is a valid datejavascript:如何检查值是否为有效日期
【发布时间】:2023-02-22 18:14:36
【问题描述】:

我有一个传入的 json,例如:

...
"orderId": 34363231,\
"plannedPalletPls": 0,\
"shipmentId": 11737,\
"createdAt": "2022-10-07T13:57:01.13Z",\
"updatedAt": "2022-10-07T13:57:01.13Z",\
...

对于每个密钥,我都需要检查它是否是日期。我使用这段代码:

if (!isNaN(Date.parse(value))) {...}

但是,例如,对于值 11737,此表达式返回 true。这不是我需要的。 检查值是否为真实日期的好方法是什么?

【问题讨论】:

标签: javascript date


【解决方案1】:

“11737”被一些 JS 引擎 (Chrome) 认为是有效的日期字符串,而被其他引擎 (FF) 认为是无效的。除非字符串遵循 ECMAScript specification 中指定的格式,否则不应依赖依赖于实现的解析算法。

如果您的 JSON 始终使用 ISO 格式作为日期,那么首先使用正则表达式来识别此类字符串:

const value = "2022-10-07T13:57:01.13Z";

const valueAsDate = /^d{4}-dd-ddTdd:dd:dd.d+Z$/.test(value) && new Date(value);

console.log(valueAsDate);

这将避免您得到的误报。

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 2011-02-26
    • 1970-01-01
    • 2012-05-22
    • 2015-01-29
    • 2012-03-15
    • 1970-01-01
    • 2018-06-15
    • 2023-03-15
    相关资源
    最近更新 更多