我在向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);
});
});
这是代码运行后的值
如您所见,日期不会改变。我做错了什么?
答案 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