如何从 datetimepicker 添加小时获取日期时间,并将其设置为日期框?

How to get datetime from datetimepicker add hours, and set it to todate box?

我有两个日期字段 fromdatetodate 我必须获取 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/

希望对您有所帮助。