Javascript:时间添加

时间:2015-04-29 11:37:10

标签: javascript jquery date

我有开始日期,如下所示:

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中有没有办法计算这个时间?

3 个答案:

答案 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') );

http://momentjs.com/docs/