function getDate(strDate) {
if (strDate == null || strDate == "")
return null;
var date = eval('new Date(' + strDate.replace(/\//g, '-').replace(/\d+(?=-[^-]+$)/,
function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');
return date;
}
数据库取得的数据,用json传到前端后,日期型已经是字符串(例如:2014/07/14 或 2014-07-14),上面的js函数就是
将字符串再转为js日期型。
代码解析:
1) 将2014/07/14转为2014-07-14,统一成中划线分隔。
strDate.replace(/\//g, '-')
2)用正则表达式找出月份的数字,将其减去1。理由是之后用【new Date】转换为日期型时,其月份参数是0~11的范围。
replace(/\d+(?=-[^-]+$)/, function (a) { return parseInt(a, 10) - 1; })
3)”/\d+(?=-[^-]+$)/“的说明:匹配数字之后是由中划线("?=-"),且中划线之后是以非中划线的字符为字符串尾部("[^-]+$")的数字。年“2014"之后虽然是中划线,但中划线之后到最终是"07-14",包含有中划线,所有不匹配。而月"07"之后是中划线,中划线之后到最终是"14",匹配要求。
参考例子:将输入的电话号码的最后一位数字以前的数字内容替换为*号
'186-0745-5588'.replace(/.+(?=\d[-]*$)/, function (a) { return a.replace(/\d/g, '*'); });
结果: "***-****-***8"
'186-0745-'.replace(/.+(?=\d[-]*$)/, function (a) { return a.replace(/\d/g, '*'); });
结果:"***-***5-"
4)"match(/\d+/g)", 将"2014-6-14"分隔为字符数组'["2014", "6", "14"]'。