2012-01-27 56 views
0

我有問題添加天到MySQL日期時間。 如果你看我的代碼,我採取了一個MySQL日期時間,我把它轉換成一個JavaScript日期。然後,我採取另一個領域,並添加幾天getDate();值。它沒有正確添加。MySQL到JavaScript,並添加天后

$(document).ready(function() { 
    $('#ProjectExtendDeadline').change(function(){ 
     var oldDate = $('#ProjectOldDeadline').val(); 
     var t = oldDate.split(/[- :]/); 
     var days = $('#ProjectExtendDeadline').val();   
     var d = new Date(t[0], t[1]+days, t[2], t[3], t[4], t[5]); 
     //d.setDate(d.getDate()); 
     month = d.getMonth(); 
     date = d.getDate(); 
     month = (month < 10 ? "0" + (month) : month); 
     date = (date < 10 ? "0" + (date) : date); 
     var date = d.getFullYear()+"-"+month+"-"+date+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds(); 
     $('#ProjectNewDeadline').val(date); 
    }); 
}); 

這是值後的代碼已經跑

enter image description here

正如你所看到的,日期不會改變。我究竟做錯了什麼 ?

+0

「T [1] +天」 加入幾天到幾個月?不要忘記將字符串轉換爲整數,否則這就是連接 – Cheery 2012-01-27 20:54:20

+0

你能解釋一下你準備完成什麼嗎?這不是很清楚。另外,我發現處理MySQL和JavaScript之間的日期比較容易,因爲它總是處理從兩者之間的時間毫秒。在JavaScript中使用MySQL的UNIX_TIMESTAMP * 1000和Date()。getTime()來獲取時代。 – pseudosavant 2012-01-27 20:58:33

回答

0
var today  =new Date(); 
var in_a_week =new Date().setDate(today.getDate()+7); 

PS:t[1]+days都是字符串,而不是整數(這是個和天??的總和)。它給你串聯字符串。重寫它(一般)爲+ T [1] + +天

而且你的代碼如下:

// from your previous question - it SHOULD be like this or 
// your month will be incorrect 
var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]); 
d = new Date().setDate(d.getDate + +days); // here it could be just days 

// add your 1 to output month number only here 
month = d.getMonth() + 1; 
0

你將你的日子的幾個月,其實。該Date()構造是

new Date(year, mon, day, hour, min, sec) 

和你正在做的

new Date(year, mon+days, day, hour, min sec) 
        ^^^^^---oops? 

請注意,您的date實際上爲2年提前5個月的olddate,這是由於加入了你的構造其實是字符串連接:

'03' + 2 -> '032' -> octal number -> 26 decimal = 2 years 4 months. 

同時,請記住,JS月份是基於0的,所以你的MySQL日期提前是什麼,它實際上1個月壽ld在JS中,所以這2年4個月實際上是2年5個月....這就是你的問題。

你可以避開大塊這個代碼,只需有:

SELECT unix_timestamp(yourdatetimefield) ... 

您的查詢,然後輸出到JS直接:

oldDate = new Date(<?php echo $timestamp ?>000); 
// '000' in there to make it a JS-style milliseconds timestamp