JavaScript中将字符串转换为Date型数据

来源:互联网 发布:kitti数据集 label 编辑:程序博客网 时间:2024/04/27 18:21

Date类型在脚本语言中经常使用,我们通常用下面的方式声明一个Date变量:
var dt=new Date();
dt为当前系统时间,但许多时候,我们需要将一个字符串转换为Date型,而中国人的习惯是年月日时分秒格式,如:
var strDate='2010-10-5 12:30:5';
年月日中间的分隔符还可能是“.”或“/”等,由于程序员输入错误或配置系统时不规范,中间可能出现多余的空格等,因此,我们需要写一个函数来将非标准输入转换为标准输入,只是要求用户按年月日时分秒的顺序输入,中间的任何分隔符我们都承认,即使首尾出现了非数字的字符,也可以自动忽略,我们按如下思路进行:
1.将字符串中的数字部分提取到数组中
2.以当前系统时间生成一个数组
3.依次用第1步中的数组替换第2步数组中的元素
4.生成日期格式
下面我们对Date类型进行扩展:
Date.CreateDateTime = function(s)
{
    var strInfo = s.match(//d+/g);
    var d = new Date(), r = [d.getFullYear(), d.getMonth() + 1, d.getDate(), 0, 0, 0];

    for (var i = 0; i < 6 && i < strInfo.length; i++)
        r[i] = strInfo[i].length > 0 ? strInfo[i] : r[i];
    return new Date(r[0],r[1]-1,r[2],r[3],r[4],r[5]);
};
接下来我们测试一下
//定义一个变量s
var s='2010-12-5 12:00:01';
alert(Date.CreateDateTime(s));
可以得到正确的结果,其中,s可以很随意地写,如:
2010.12
2010.12.1 2:
等等,只要按照年月日时分秒顺序,分隔符用除数字外的任意字符(一个以上)即可,甚至设置下面的变量仍然可以正确解析:
    var ss = 'aaa2010+asdf
sd10llasd-+5!@#03s:5:fff8aa12ss05xyz';
    alert(Date.CreateDateTime(ss));

 

原创粉丝点击