首页 > 解决方案 > momentjs:检查字符串是否是特定格式的日期

问题描述

我收到了一些字符串,如果它们是日期,我想格式化它们。

我正在使用 moment.js 来检查字符串是否为日期:

只有这种格式的字符串应该返回 true:2011-03-02T11:02:00+03:00

但是,目前,这也被视为有效日期:034932或此:279565

我的代码:

const date = new Date(dateString);
return moment(date, moment.ISO_8601, true).isValid();

我如何用momentjs检查这个?

我查看了文档,但没有找到任何明确包含时区偏移的格式定义。

标签: angularmomentjs

解决方案


new Date(dateString)如果要使用 momentjs 检查字符串格式,则不必使用。您的代码会产生误导性结果,因为您正在使用本机 JavaScrpt Date 解析输入。您必须使用(所以第一个参数应该是字符串,而不是 Javacript 日期)。moment(String, String, Boolean)

工作示例:

const isStringValidDate = (dateString) => moment(dateString, moment.ISO_8601, true).isValid();
["034932", "279565", "2011-03-02T11:02:00+03:00"].forEach((val) => console.log(val, isStringValidDate(val)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>


推荐阅读