js或jquery里字符串转时间及判断转换后的是否为日期时间亲测 原创 收藏


  • :
  • 04-01 14:58
  • :
  • 119次
  • :
  • 0条
  • 1赞

简介本文整理了在js及jquery里,把字符串转为时间,及时间戳与时间之间相互转换的方法。

本文站长和大家整理一下在js和jquery里,和“把字符串转为日期时间,并且判断转换后的是否为标准的日期时间”相关的内容及方法:

比如,网页里显示了当前页面最后更新的时间,我们用jquery获取到后,得到的只是“字符串”格式的日期,我们需要把它转换成“日期时间”类型,才能对它进行一些类似“判断与当前时间的间隔”之类的操作。

一:字符串转日期:

要把这样的字符串转为时间,非常的简单:

var date=new Date(str);//str 就是我们获取到的字符串

二:判断转换后的是否为标准日期:

上面的代码里,要转换的如果不是“日期/时间”,那么new Date()返回的是“Invalid Date”,并且,我们不能通过true/false来判断是否转换成功的:

//下面这种判断是错误的:
var date=new Date("aijquery"); //返回的是 Invalid Date
if(date){
    //这样来判断,没用的,不管是否转换成了时间,直接if根本无法判断出来的。
}

接着,你可能会说,我们可以获取变量的类型来进行判断,但站长要说的是,这也是行不通的:

//jquery里:
var date=new Date("www.aijquery.cn");
console.log($.type(date));    //经过亲测,不管要转换的内容是什么,这里返回的永远都是date

//js里:
var date=new Date("aijquery");
console.log(typeof(date));    //亲测,永远返回的是object

网上找了下, 有人说可以用instanceof来判断,我们先来测试一下:

var str=new Date("2019-1-1");
console.log(str instanceof Date); //true

var str=new Date("aijquery");
console.log(str instanceof Date); //true

上面是站长亲测的结果,可以看出,用instanceof也是判断不出来的!

上面我们说了,错误的判断方法,下面站长来整理一下正确的判断方法:

方法一:用Date.parse:

Date.parse() : 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。

//如果我们用net Date()转换后,得到的不是日期/时间,那么Date.parse()返回的是NaN;
var str="aijquery";
var date=new Date(str);
console.log(Date.parse(date)); //输出的是NaN
//并且可以用if来判断了:
if(Date.parse(date)){
    //是日期/时间
}else{
    //不是日期时间
}

上面的代码是站长亲测的!!!

方法二:用正则:

//比如我们要验证格式为2019-03-31,比如“粗糙”的写法:
var reg=/^\d{4}-\d{2}-\d{2}$/gi;

//下面来给大家分享个“严格”的:
var reg=/^[1-2]\d{3}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$/gi;
//上面这个正则,要求字符串,必须符合“yyyy-MM-dd”的格式,也就是月和日必须为两位数

//如果加上月或日是一位数的判断,可以改为:
var reg=/^[1-2]\d{3}\-(0?[1-9]|1[0-2])\-(0?[1-9]|[1-2][0-9]|3[0-1])$/gi;

//如果我们要验时间的话,如16:30:58
var reg=/^(0?[1-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9]):([0-5][0-9])$/gi;


您正在找的文章可能是: