我有开始日期,如下所示:
var beginDate = "29/04/2015";
var beginHour = "13:32";
我有一些持续时间变量:
var hourDuration = "2";
var minuteDuration = "10";
我必须计算结束日期:
我的例子,我试图得到:
var endDate = "29/04/2015";
var endHour = "15:42";
但是如果用户为持续时间设置了很长的小时时间,那么endDate必须考虑结束将是另一天。
JavaScript中有没有办法计算这个时间?
答案 0 :(得分:2)
没有任何库,这将是这样的:
var beginDate = "29/04/2015";
var beginHour = "13:32";
var hourDuration = "2";
var minuteDuration = "10";
var date = beginDate.split('/'), time = beginHour.split(':');
date = new Date(date[2], date[1] - 1, date[0], time[0], time[1]);
var newDate = new Date(+date + (hourDuration * 60 + +minuteDuration) * 60000);
var endDate = newDate.getDate() + '/' + (newDate.getMonth() + 1) + '/' + newDate.getFullYear();
var endHour = newDate.getHours() + ':' + newDate.getMinutes();
alert( endDate + ' ' + endHour);
但我建议使用momentjs
答案 1 :(得分:1)
要让它真正准确,您可以在Javascript中使用“Date”对象。小心它知道当地时区。如果你在GMT + 2(像我:),下面的脚本显示17:42而不是15:42。
var beginDate = "29/04/2015";
var beginHour = "13:32";
var dateo = new Date(beginDate.split("/").reverse().join("-") + "T" + beginHour + ":00");
var hourDuration = "2";
var minuteDuration = "10";
var enddate = new Date(dateo.getTime() + (hourDuration * 3600000) + (minuteDuration * 60000 ));
alert(enddate);
答案 2 :(得分:0)
Javascript有一个内置的Date对象,可以解析RFC2822兼容的日期字符串。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
但是,您的字符串不符合RFC2822规范(没有事先更改)。
因此我建议你使用momentjs。这是一个非常方便的日期/时间操作库。例如,要从给定日期添加两个小时,您可以输入。
var timeString = '29/04/2015 13:32';
var time = moment(timeString, 'mm/dd/yyyy hh:ss').add(2, 'hour');
console.log(time.format('mm/dd/yyyy hh:ss') );