代码之家  ›  专栏  ›  技术社区  ›  theJuls

检查日期是否已经用矩分析过

  •  2
  • theJuls  · 技术社区  · 6 年前

    moment . 问题是在某些情况下,它被解析了两次,这导致它变得 undefined

    这是代码当前的样子:

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

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

    力矩无效(/*2018-09-21T05:00:00.000Z*/)

    toDate() 成为 未定义 .

    第一次我会得到我想要的:

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

    在做这些之前,我想检查一下它是否已经按照我期望的格式。我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   ADyson    6 年前

    你可以使用 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>