我无法使用moment.js获取有效的日期格式。我无法拒绝只有日期而非时间的条目。
日期应为"月 - 日 - "格式化(美国风格),应包括以小时为单位的时间:分钟。
允许格式的示例:
- 2/02/2019 0:00
- 31/12/2019 0:00
- 31/2/2019 00:00
这是我的代码:
moment(item["InputDate"], 'MM/DD/YYYY HH:mm', true).isValid()
如果我尝试使用严格格式化选项,我将无法验证单个数字日期或月份的日期。我通过excel输入从字符串类型获取此输入。
有没有办法只检查日期是否采用上述格式且没有时间?
编辑1:我最终列出了有效格式,并使用moment.js验证作为临时解决方法将它们添加到严格验证中。但我不确定这是否是一个详尽的格式列表。 我使用以下作为有效格式列表:
答案 0 :(得分:0)
如果您期望一系列不同的格式,我建议使用正则表达式来验证格式,然后通过moment.js进行松散值验证。这样你就不必考虑严格格式的每种可能组合,例如
[
'2/3/18 23:15',
'2/3/18',
'2/3/18 2:15',
'2/3/2018 23:15',
'12/13/2018 25:15', // invalid time
'2/29/18 23:15', // invalid date
'12/03/2018 03:05'
].forEach(s => {
var re = /\d\d?\/\d\d?\/\d{2,4}/;
console.log(s + ' : ' + (re.test(s) && moment(s, 'M/D/YY HH:mm').isValid()));
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
&#13;
validate a date还有其他方法。除非您有一个商定的转换为4位数年份的算法,否则强烈建议不要使用两位数年份。在javascript中,两位数年份被解析为20世纪(即&#34; xx&#34; as&#34; 19xx&#34;),但有些系统使用的帧如0到30的值在本世纪,在之前的31到99。