2012-01-27 13 views
0

mysqlの日付時刻に日数を追加する問題があります。 私のコードを見ると、mysql datetimeをとり、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

+0

達成しようとしていることを正確に説明できますか?それはあまり明確ではありません。また、私はMySQLとJavaScriptの間の日付を処理する方が、2つの間の時代から常に1ミリ秒を処理する方が簡単だと分かりました。エポックを取得するには、MySQLのUNIX_TIMESTAMP * 1000とDate()。getTime()をJavaScriptで使用します。 – pseudosavant

答えて

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

PS:t[1]+daysは両方の文字列ではなく整数である(これは月と日??の合計です)。それはあなたに文字列の連結を与えます。 [1] + +日

+ tと(一般的に)それを書き換え、あなたのコードは次のようになります。あなたが実際に、数ヶ月にご日間追加してい

// 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

。日付()コンストラクタは

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

であり、あなたがあなたのコンストラクタが実際にあることに加えによるものである、あなたのdateは5ヶ月先olddateの実際2年であることを

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

注意をやっています文字列の連結:

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

だけでなく、あなたのMySQLの日付が1ヶ月先に何それ寿の実際にあるので、JSの数ヶ月は、0ベースのしていることを覚えておいてください私はJSにいますので、この2年4ヶ月は実際には2年5ヶ月です。あなたの問題があります。

あなたは、単に持っていることによって、このコードの大きな塊を避けることができます:直接JSへ出力すること、その後、クエリの

SELECT unix_timestamp(yourdatetimefield) ... 

を:

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