【问题标题】:How to check if a string is a date value / date string in react如何检查字符串是否是反应中的日期值/日期字符串
【发布时间】:2020-09-21 07:40:56
【问题描述】:

我想检查一个字符串值是否是一个日期。 我使用了不同的方式来识别,但它们都将“111”(以及其他类似的字符串)识别为日期。

实际上,我有用户输入的不同字符串,例如:文本、数字、IP 地址、日期、范围、日期时间等。我将它们全部保存为字符串(因为我必须在我的项目中将它们保存为字符串)

现在,在我项目的其他部分,我想检查一个字符串是否为日期(使用这种格式 2020-09-23 00:00:00),显示不同并将其转换为日期。

我是这样用的:

1-

 moment(myString, "YYYY-MM-DD HH:mm:ss").isValid()

2-

Date.parse(myString)

但对于字符串“111”或“1234”等,它们都返回true

当且仅当 mySting 的 YYYY-MM-DD HH:mm:ss 格式如下:2020-09-23 00:00:00

【问题讨论】:

    标签: reactjs string datetime momentjs


    【解决方案1】:

    您为什么不尝试将字符串解析为日期?所以像new Date(dateString) 这样的东西要么会吐出一个日期对象,要么会吐出一个表示日期无效的字符串。在你的情况下,你应该试试这个 const isDateValid = (date = "") => { let parsedDate = new Date(date); return parsedDate.toString() !== "Invalid Date"; } 这应该可以解决问题。

    【讨论】:

    • 谢谢,但这不能正常工作。对于长度true。例如,您的解决方案为 111 字符串返回 true。
    • 在这种情况下,我唯一能想到的就是使用正则表达式验证输入,然后尝试找出日期是否有效。我认为这应该可以解决问题const isDateValid = (date = "") => { const dateRegex = /^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$/; if(!dateRegex.test(date)) return false; let parsedDate = new Date(date); return parsedDate.toString() !== "Invalid Date"; }
    猜你喜欢
    • 2011-11-18
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多