js date怎么实现小时的加法运算呢?

date和hour都是后台动态传给我的,date的格式是这样的:2017-09-15T11:08:13.681648,hour格式是这样:2或者0.5,我现在要实现date和hour相加后,把结果显示。请大神指点如何实现date和hour的相加运算!

阅读 13.7k
4 个回答

转化成时间戳进行计算,可以避免谷歌和firefox的时区兼容性问题:
var stringTime = '2017-09-15T11:08:13.681648';
var timestamp2 = Date.parse(new Date(stringTime));
timestamp2 = timestamp2 / 1000;
var seconds = 2*3600;
timestamp=timestamp2+seconds
console.log(stringTime + "的时间戳为:" + timestamp);
var newDate = new Date();
newDate.setTime(timestamp * 1000);
console.log(newDate.toGMTString());

function datePlus (date, hour) {
  return new Date(new Date(date).valueOf() + hour * 60 * 60 * 1000)
}
datePlus('2017-09-15T11:08:13.681648', 2)
// => Fri Sep 15 2017 13:08:13 GMT+0800 (CST)

转时间戳计算完成后转回来

新手上路,请多包涵
var date = new Date('2017-09-15T11:08:13.681648');
var seconds = 2 * 60 * 60;    // 将小时转换为秒
date.setSeconds(date.getSeconds() + seconds);
console.log(date);

Date对象的setHours, setMinutes, setSeconds方法都可以设置超过其本身的数字,如

var date = new Date();
date.setHours(25);
date.setMinutes(61);
date.setSeconds(61);
// 超过的时间会自动进位,所以可以直接使用Date对象进行加减运算
date.setHours(date.getHours() + 1);    // 当前时间加1小时
date.setHours(date.getHours() - 1);    // 当前时间减1小时
date.setHours(date.getHours() + 1.9);    // 小数会自动取整,即只增加1个小时
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题