检查日期是否有效

新手上路,请多包涵

以下是场景:

我有一个 String 日期和一个不同的日期格式。前任。:

日期:2016-10-19

日期格式:“DD-MM-YYYY”。

我需要检查此日期是否为有效日期。

我尝试过以下事情

var d = moment("2016-10-19",dateFormat);

d.isValid() 每次都返回 false 。 Moment.js 不解析给定格式的日期吗?

然后我尝试先将日期格式化为 DD-MM-YYYY ,然后将其传递给 Moment.js:

var d = moment("2016-10-19").format(dateFormat);
var date = moment(d, dateFormat);

现在 date.isValid() 给了我想要的结果,但是这里 Moment.js 日期对象被创建了两次。我怎样才能避免这种情况?有更好的解决方案吗?

仅供参考,我不允许更改 dateFormat

原文由 Ganesh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 851
2 个回答

能够找到解决方案。

由于我得到的日期是 ISO 格式,因此只提供日期到时刻将对其进行验证,无需传递 dateFormat。

 var date = moment("2016-10-19");

然后 date.isValid() 给出期望的结果。

原文由 Ganesh 发布,翻译遵循 CC BY-SA 3.0 许可协议

var date = moment('2016-10-19', 'DD-MM-YYYY', true);

您应该在调用 moment 时添加第三个参数,以强制执行严格解析。这是 moment 文档的相关部分 http://momentjs.com/docs/#/parsing/string-format/ 它接近该部分的末尾。

原文由 Andrew 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题