如何测试字符串是有效的日期还是不使用时间? [英] How to test a string is valid date or not using moment?

查看:178
本文介绍了如何测试字符串是有效的日期还是不使用时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想测试输入的日期和时间是否有效。

I would like to test if a date and or time entered is valid.

可以用JavaScript进行日期和时间测试,这似乎是一场噩梦。 (已经花了几个小时)。

Can this be done with moment as date and time testing with javascript seems a nightmare. (have spent hours on this).

测试数据看起来像这样。

Test data looks like this.

无效

Invalid

invalid = ""
invalid = " "
invalid = "x"
invalid = "1/1"
invalid = "30/2/2015"
invalid = "2/30/2015"

有效

isvalid = "1/12/2015"
isvalid = "1/12/2015 1:00 PM";

尝试过各种JavaScript方法,小时试用失败。

Have tried various javascript methods with hours of trials failing.

我以为时候会有这样的东西。所以尝试以下,所有这些都不起作用,因为我没有想法的时候这样做。

I thought moment would have something for this. So tried the following, all of which does not work because I do no think moment works like this.

var valid = moment(input).isDate()
var valid = moment().isDate(input)

我的时间格式是dd / mm / yyyy

My time format is "dd/mm/yyyy"

推荐答案

是的,你可以使用momentjs来解析它,并将其与字符串

Yes, you could use momentjs to parse it and compare it back with the string

function isValidDate(str) {
  var d = moment(str,'D/M/YYYY');
  if(d == null || !d.isValid()) return false;

  return str.indexOf(d.format('D/M/YYYY')) >= 0 
      || str.indexOf(d.format('DD/MM/YYYY')) >= 0
      || str.indexOf(d.format('D/M/YY')) >= 0 
      || str.indexOf(d.format('DD/MM/YY')) >= 0;
}

测试代码

tests = ['',' ','x','1/1','1/12/2015','1/12/2015 1:00 PM']
for(var z in tests) {
  var test = tests[z];
  console.log('"' + test + '" ' + isValidDate(test));
}

输出

 "" false
 " " false
 "x" false
 "1/1" false
 "1/12/2015" true
 "1/12/2015 1:00 PM" true

这篇关于如何测试字符串是有效的日期还是不使用时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆