繁体   English   中英

检查日期是否已经用时刻解析

[英]Check if date has already been parsed with moment

我正在传递一个需要用moment适当解析的日期字符串。 问题是在某些情况下它会被解析两次,这会导致它变成undefined

这是代码目前的样子:

moment.tz(dt, 'MMMM D, YYYY', timezone).toDate()

当我第二次解析它时,我得到:

moment.invalid(/* 2018-09-21T05:00:00.000Z */)

这导致当我执行toDate()时变为undefined

而第一次我会得到我所期望的:

'2019-02-01T05:00:00.000Z'

在做任何这些之前,我想检查它是否已经是我期望的格式。 我该怎么做呢?

您可以潜在地使用isValid()方法在调用toDate()之前检查解析是否有效。 演示:

 var timezone = "America/Los_Angeles"; var dt = 'Sept 21, 2018'; var m = moment.tz(dt, 'MMMM D, YYYY', timezone); var converted = m.toDate().toString(); console.log(converted); var x = moment.tz(converted, 'MMMM D, YYYY', timezone); console.log(x.isValid()); //if parsing worked, use the new value if (x.isValid()) { console.log(x.toDate()); } // if not, assume it's already the correct format and just use that else { console.log(converted); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.21/moment-timezone-with-data.min.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM