我有两个日期字段fromdate
和todate
我必须获得fromdate
并为日期添加小时数,并将结果日期设置为todate
。我在这里尝试的是将“无效日期”作为值。以下是我的代码。请看看。
function setEndDate(k)
{
var date2 = new Date($('#startdate' + k).val());
var hours = parseFloat($("#duration"+k).val());
date2.setHours(date2.getHours() + hours);
var day = date2.getDate();
var month = date2.getMonth()+1;
var year = date2.getFullYear();
var hour = date2.getHours();
var minutes = date2.getMinutes();
var seconds = date2.getSeconds();
date2=(year + '-' + month + '-' + day+' '+hour+':'+minutes+':'+seconds);
$('#enddate' + k).val(date2);
}
答案 0 :(得分:0)
您遇到的第一个问题是您的开始日期格式不正确,无法转换为Date
对象。你需要转换:
2015-07-17 15:25:00
到
2015-07-17T15:25:00
可以使用replace
上的简单string
来完成:
startdate = startdate.replace(' ','T');
然后您可以按如下方式创建日期对象:
var fromDate = new Date(startdate);
您遇到的第二个问题是日期功能(例如getHours()
)将在格式化时需要单个小时(例如3个)返回单个integer
03以便在创建新日期时使用它。我在代码中添加了一个新函数来实现这个目的:
function formatNum(num) {
return num < 10 ? '0' + num : '' + num;
}
完整的JavaScript如下:
function setEndDate(k) {
var startdate = $('#startdate').val();
startdate = startdate.replace(' ', 'T'); // convert date string to suitable format
var fromDate = new Date(startdate); // create the date object
fromDate = new Date(fromDate.setHours(fromDate.getHours() + k)); // add hours to fromDate
var day = formatNum(fromDate.getDate());
var month = formatNum(fromDate.getMonth() + 1);
var year = fromDate.getFullYear();
var hour = formatNum(fromDate.getHours());
var minute = formatNum(fromDate.getMinutes());
var seconds = formatNum(fromDate.getSeconds());
var toDate = year + '-' + month + '-' + day + ' ' + hour + '-' + minute + '-' + seconds;
$('#enddate').val(toDate);
}
function formatNum(num) {
return num < 10 ? '0' + num : '' + num;
}
&#13;
我在这里设置了一个快速演示:http://jsfiddle.net/1vtf246s/
希望它有所帮助。