Javascript 回到一年前的同一天
我需要找到一年前的同一天的今天 所以如果今天是星期一,我需要找到与一年前的今天的星期一相等的值 比如2017年3月3日(星期五),我会在2017年3月4日(星期五)找到我。Javascript 回到一年前的同一天,javascript,date,Javascript,Date,我需要找到一年前的同一天的今天 所以如果今天是星期一,我需要找到与一年前的今天的星期一相等的值 比如2017年3月3日(星期五),我会在2017年3月4日(星期五)找到我。 2017年2月16日(星期四)会找到我2017年2月18日(星期四)等等 我真正感兴趣的是找到比数字更多的一天。 我尝试了以下方法: Date.prototype.addDays = function (days) { var dat = new Date(this.valueOf());
2017年2月16日
(星期四)会找到我2017年2月18日
(星期四)等等
我真正感兴趣的是找到比数字更多的一天。
我尝试了以下方法:
Date.prototype.addDays = function (days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
var dateObj = new Date();
var wanted= dateObj.addDays(-365 + 1);
但是当然,想要的
必须进行日常更改,所以这不起作用。
接下来,我试着找出2017年那个特定星期五的数字,然后在2017年找到相同的数字,试图以某种方式适应
但在这种情况下,它只计算星期五的数量,而不是数字,我无法让它工作。
也许最好的办法是以一周的数字为指导,而不仅仅是以最接近同一日期的星期五为指导。
有没有办法只使用JavaScript(没有像矩.js这样的库)您可以尝试以下方法: 逻辑:
- 用+/-年数向后/向前移动
- 使用
更新日期date.setYear
- 现在检查两个日期之间的差异
- 将此差异添加到日期并返回
函数getSameDayOfYear(日期、年份添加){
日期=类型(日期)==“字符串”?新日期(日期):日期;
var retDate=新日期(+日期);
retDate.setYear(retDate.getFullYear()+yearsToAdd);
var diff=date.getDay()-retDate.getDay();
retDate.setDate(retDate.getDate()+diff);
console.log(retDate.toLocaleDateString())
归还日期;
}
getSameDayOfYear(“2017年3月3日”,-1)
getSameDayOfYear(“2017年2月16日”,-1)
getSameDayOfYear(“2017年3月3日),-2)
您可以尝试以下方法:
逻辑:
- 用+/-年数向后/向前移动
- 使用
更新日期date.setYear
- 现在检查两个日期之间的差异
- 将此差异添加到日期并返回
函数getSameDayOfYear(日期、年份添加){
日期=类型(日期)==“字符串”?新日期(日期):日期;
var retDate=新日期(+日期);
retDate.setYear(retDate.getFullYear()+yearsToAdd);
var diff=date.getDay()-retDate.getDay();
retDate.setDate(retDate.getDate()+diff);
console.log(retDate.toLocaleDateString())
归还日期;
}
getSameDayOfYear(“2017年3月3日”,-1)
getSameDayOfYear(“2017年2月16日”,-1)
getSameDayOfYear(“2017年3月3日),-2)
Rajesh的代码中有一个小问题。它将向后倒退5或6天,此时它将“更接近”前进1或2
以下是一个简单的修复方法:
function getSameDayOfYear(date, yearsToAdd){
date = typeof(date) === "string" ? new Date(date) : date;
var retDate = new Date(+date);
retDate.setYear(retDate.getFullYear() + yearsToAdd);
var diff = date.getDay() - retDate.getDay();
if(diff < -4){
diff = diff + 7; //go forward instead of backward
}
retDate.setDate(retDate.getDate() + diff);
console.log(retDate.toLocaleDateString())
return retDate;
}
函数getSameDayOfYear(日期、年份添加){
日期=类型(日期)==“字符串”?新日期(日期):日期;
var retDate=新日期(+日期);
retDate.setYear(retDate.getFullYear()+yearsToAdd);
var diff=date.getDay()-retDate.getDay();
如果(差异<-4){
diff=diff+7;//前进而不是后退
}
retDate.setDate(retDate.getDate()+diff);
console.log(retDate.toLocaleDateString())
归还日期;
}
拉杰什的代码中有一个小问题。它将向后倒退5或6天,此时它将“更接近”前进1或2
以下是一个简单的修复方法:
function getSameDayOfYear(date, yearsToAdd){
date = typeof(date) === "string" ? new Date(date) : date;
var retDate = new Date(+date);
retDate.setYear(retDate.getFullYear() + yearsToAdd);
var diff = date.getDay() - retDate.getDay();
if(diff < -4){
diff = diff + 7; //go forward instead of backward
}
retDate.setDate(retDate.getDate() + diff);
console.log(retDate.toLocaleDateString())
return retDate;
}
函数getSameDayOfYear(日期、年份添加){
日期=类型(日期)==“字符串”?新日期(日期):日期;
var retDate=新日期(+日期);
retDate.setYear(retDate.getFullYear()+yearsToAdd);
var diff=date.getDay()-retDate.getDay();
如果(差异<-4){
diff=diff+7;//前进而不是后退
}
retDate.setDate(retDate.getDate()+diff);
console.log(retDate.toLocaleDateString())
归还日期;
}
< NagyNick >虽然相同,但是标签完全不同,你认为“同一天”是什么?你可以说它必须是一年中的第15个星期三,或者你想在去年的今天有一个“最近的”星期三?@Mirko Vukušić我想我可以用一周的数字作为指导。否则就太危险了complicated@Lima9你应该改正错误。他们可能会混淆someone@NagyNick虽然是一样的,标签是完全不同的,你认为什么是“同一天”?你可以说它必须是一年中的第15个星期三,或者你想在去年的今天有一个“最近的”星期三?@Mirko Vukušić我想我可以用一周的数字作为指导。否则就太危险了complicated@Lima9你应该改正错误。他们可能会把一些非常感谢你的人弄糊涂。你的方法很有趣!非常感谢你。你的方法很有趣!