如何从 datetimepicker 添加小时获取日期时间,并将其设置为日期框?
How to get datetime from datetimepicker add hours, and set it to todate box?
我有两个日期字段 fromdate
和 todate
我必须获取 fromdate
并向日期添加小时数,并将结果日期设置为 todate
。在这里我尝试的是给 'Invalid Date' 作为一个值。下面是我的代码。请看一下。
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);
}
您遇到的第一个问题是开始日期的格式不正确,无法转换为 Date
对象。您需要转换:
2015-07-17 15:25:00
至
2015-07-17T15:25:00
这可以通过 string
上的简单 replace
来完成:
startdate = startdate.replace(' ','T');
然后您可以创建一个日期对象,如下所示:
var fromDate = new Date(startdate);
您遇到的第二个问题是日期函数,例如 getHours()
,将 return 单个 integer
一个小时(例如 3),当您需要时它的格式为 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;
}
我在这里设置了一个快速演示:http://jsfiddle.net/1vtf246s/
希望对您有所帮助。
我有两个日期字段 fromdate
和 todate
我必须获取 fromdate
并向日期添加小时数,并将结果日期设置为 todate
。在这里我尝试的是给 'Invalid Date' 作为一个值。下面是我的代码。请看一下。
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);
}
您遇到的第一个问题是开始日期的格式不正确,无法转换为 Date
对象。您需要转换:
2015-07-17 15:25:00
至
2015-07-17T15:25:00
这可以通过 string
上的简单 replace
来完成:
startdate = startdate.replace(' ','T');
然后您可以创建一个日期对象,如下所示:
var fromDate = new Date(startdate);
您遇到的第二个问题是日期函数,例如 getHours()
,将 return 单个 integer
一个小时(例如 3),当您需要时它的格式为 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;
}
我在这里设置了一个快速演示:http://jsfiddle.net/1vtf246s/
希望对您有所帮助。