ZoeyYoung / blog

博客
1 stars 0 forks source link

【坑】Clone Date #21

Open ZoeyYoung opened 8 years ago

ZoeyYoung commented 8 years ago

在1月31日的时候无意中发现系统的一个BUG

原因是旧项目代码写了一段非常SB的代码

function cloneDate(date) {
  var _date = new Date();
  _date.setFullYear(date.getFullYear());
  _date.setMonth(date.getMonth());
  _date.setDate(date.getDate();
  return _date;
}

在平常这段代码没什么问题,当月末的时候问题就来了,因为下个月的天数比这个月短,因此当把月份设置成2月,而date还是31的时候,就会变成3月2日;

var date = new Date('2016-02-01');
var _date = new Date('2016-01-31');  // 当前日期
_date.setFullYear(date.getFullYear());
console.log(_date.toString()); // "Sun Jan 31 2016 08:00:00 GMT+0800 (CST)"
_date.setMonth(date.getMonth());
console.log(_date.toString()); // "Wed Mar 02 2016 08:00:00 GMT+0800 (CST)"
_date.setDate(date.getDate());
console.log(_date.toString()); // "Tue Mar 01 2016 08:00:00 GMT+0800 (CST)"

说SB的原因是压根不知道这个函数存在的意义~