Проверьте, была ли дата уже проанализирована с моментом - PullRequest
0 голосов
/ 21 сентября 2018

Я передаю строку даты, которую необходимо соответствующим образом проанализировать с помощью 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 голосов
/ 21 сентября 2018

Вы могли бы потенциально использовать метод 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>
...