希望你能帮助我,我想弄清楚为什么我写的这个解析日期功能在2014年5月29日(可能还有其他日期)不起作用
function parseDate(dateString){
//Accepts DD/MM/YYYY HH:MM
var date = new Date();
date.setDate (parseInt(dateString.substr(0, 2), 10));
date.setMonth (parseInt(dateString.substr(3, 2), 10) - 1);
date.setYear (parseInt(dateString.substr(6, 4), 10));
date.setHours (parseInt(dateString.substr(11, 2), 10));
date.setMinutes (0);
date.setSeconds (0);
date.setMilliseconds (0);
return date;
}
$('#result').text(parseDate('29/05/2014 08:00'));
//Result Thu May 01 2014 08:00:00 GMT+1000 (EST)
这个小提琴的链接在这里:http://jsfiddle.net/2k4Ux/
它可能是一些愚蠢的东西,但我现在无法理解它。
答案 0 :(得分:3)
您应该更改操作的顺序,例如:http://jsfiddle.net/maximgladkov/m6sUM/1/
function parseDate(dateString){
//Accepts DD/MM/YYYY HH:MM
var date = new Date();
date.setYear (parseInt(dateString.substr(6, 4), 10));
date.setMonth (parseInt(dateString.substr(3, 2), 10) - 1);
date.setDate (parseInt(dateString.substr(0, 2), 10));
date.setHours (parseInt(dateString.substr(11, 2), 10));
date.setMinutes (0);
date.setSeconds (0);
date.setMilliseconds (0);
return date;
}
$('#result').text(parseDate('29/05/2014 08:00'));
并非所有月份都超过28天,因此在您设置年份和月份之前,如果日期有效,则Date对象无法确定。
答案 1 :(得分:2)
你可以这样做:
function parseDate(dateString) {
var parts = dateString.match(/\d+/g);
return new Date(
parts[2], parts[1] - 1, parts[0], // date
parts[3], parts[4] // time
);
}