有问题将mysql datetime转换为javascript日期

时间:2012-01-27 19:53:49

标签: javascript mysql timestamp

我正在尝试将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();
});

Here is the values I get back. I the date is clearly 3 but shows as 2

3 个答案:

答案 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]);
  }

Source

ps:哦,我看到你的困惑:)是的,月份= 2月是3月。只要发出警报(d),你就会理解。

答案 2 :(得分:0)

我明白了。愚蠢的错误。

第二个参数t[1]-1的值为-1。不得不删除。遗憾。