Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回到一年前的同一天_Javascript_Date - Fatal编程技术网

Javascript 回到一年前的同一天

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年3月3日(星期五),我会在2017年3月4日(星期五)找到我。
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你应该改正错误。他们可能会把一些非常感谢你的人弄糊涂。你的方法很有趣!非常感谢你。你的方法很有趣!