我正在尝试将mysql datetime转换为javascript日期时间。有问题。没有返回正确的日期。
$('#ProjectExtendDeadline').change(function(){
var oldDate = $('#ProjectOldDeadline').val();
var t = oldDate.split(/[- :]/);
var days = $('#ProjectExtendDeadline').val();
var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
var date = d.getDate()+" "+d.getMonth()+" "+d.getFullYear();
});
答案 0 :(得分:1)
您的代码是正确的。 getMonth
方法返回从零开始的月份(0 ... 11)。
同样,Date
构造函数需要一个从零开始的月份,因此您的代码是正确的,因为数据库中的值是从1开始的。
var d = new Date(2012,0,3);
document.write(d);
<强>输出强>
Tue Jan 03 2012 00:00:00 GMT+0000 (GMT Standard Time)
答案 1 :(得分:0)
function mysqlTimeStampToDate(timestamp) {
//function parses mysql datetime string and returns javascript Date object
//input has to be in this format: 2007-06-05 15:26:02
var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}
ps:哦,我看到你的困惑:)是的,月份= 2月是3月。只要发出警报(d),你就会理解。
答案 2 :(得分:0)
我明白了。愚蠢的错误。
第二个参数t[1]-1
的值为-1。不得不删除。遗憾。