如何使用Moment.js将日期验证为指定的格式?

问题描述:

我无法找到关于如何使用moment.js验证日期输入以确保其格式为“2017-12-31T23:59:59Z”的现有问题/答案。如何使用Moment.js将日期验证为指定的格式?

鉴于我有一个字符串日期“2017-12-31T23:59:59Z”,如何验证日期字符串严格按照指定的格式“YYYY-MM-DDThh:mm :SSZ”。

我试过以下,它似乎并没有为我工作。

var dateTime = "2017-12-31T23:59:59Z"; 
 
var utc = moment(dateTime, "YYYY-MM-DDThh:mm:ssZ", true) 
 
var isUTC = utc.isValid(dateTime); 
 

 
console.log(isUTC);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

任何人都可以请提供一些例子?

在此先感谢 -R

+1

转换代码到可运行的代码片段显示它工作正常。问题出在'const moment = require('moment')' – RobG

+0

我认为它应该返回true,而是。除非我的格式说明无效? – Roobie

+0

0-23小时请使用大写'HH',小写'hh'为01-12。 – VincenzoC

瞬间令牌是区分大小写的,你应该使用大写HH解析0-23小时,hh是解析1-12。请参阅moment(String, String, Boolean)文档。

这里一个活生生的例子:

var dateTime = "2017-12-31T23:59:59Z"; 
 
var utc = moment(dateTime, "YYYY-MM-DDThh:mm:ssZ", true) 
 
var isUTC = utc.isValid(); 
 
console.log(isUTC); 
 

 
utc = moment(dateTime, "YYYY-MM-DDTHH:mm:ssZ", true) 
 
isUTC = utc.isValid(); 
 
console.log(isUTC);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

谢谢!对我来说工作正常。就偶然发现了......和HH。 – Roobie