mysql到javascript并在之后添加几天

时间:2012-01-27 20:50:36

标签: javascript mysql timestamp

我在向mysql日期时间添加天数时遇到问题。 如果你查看我的代码,我会使用mysql datetime并将其转换为javascript日期。然后我拿另一个字段并为getDate()添加天数;值。它没有正确添加。

$(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

如您所见,日期不会改变。我做错了什么?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

实际上,你正在为这几个月添加你的日子。 Date()构造函数是

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

你正在做

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

请注意,您的date实际上比olddate早5个月,这是因为您的构造函数实际上是字符串连接:

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

同样,请记住JS月份是基于0的,因此您的MySQL日期实际上比JS应该提前1个月,所以这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