检查日期是否已经被瞬间解析

时间:2018-09-21 14:18:58

标签: javascript date momentjs moment-timezone

我正在传递一个日期字符串,该字符串需要使用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'

在执行任何此操作之前,我想检查它是否已经符合我期望的格式。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以潜在地使用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>