2012-01-27 26 views
1

mysql datetimeをjavascript datetimeに変換しようとしています。問題がある正しい日付が返されません。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

答えて

1

あなたのコードが正しいです。 getMonthメソッドは、0から始まる月(0 .. 11)を返します。データベースからの値が1ベースであるとして、あなたのコードが正しいよう


同様にDateコンストラクタは、ゼロベースヶ月望んでいます。

var d = new Date(2012,0,3); 
document.write(d); 

OUTPUT

Tue Jan 03 2012 00:00:00 GMT+0000 (GMT Standard Time) 
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月です:)あなたの混乱を参照してください。ちょうど警告する(d)あなたは理解するでしょう。

0

私はそれを理解しました。愚かなミス。

第2パラメータt[1]-1は、-1を持ちます。削除する必要がありました。ごめんなさい。

+1

いいえ - 'Date'コンストラクタの月の値もゼロに基づいています(0 == January)ので、コードは完全に正しいです。デモのために私の答えを編集しました。 – Borodin