Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.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中获得过去7天和未来7天_Javascript_Date_Datetime_Days - Fatal编程技术网

如何在Javascript中获得过去7天和未来7天

如何在Javascript中获得过去7天和未来7天,javascript,date,datetime,days,Javascript,Date,Datetime,Days,我正在尝试使用javascript日期函数获取过去7天和未来7天的日期开始数据和结束日期 例如:今天2017年3月31日,当我单击上一个按钮时,它将从上一个日期开始计算,即:开始和结束日期(2017年3月24日至2017年3月30日),再次单击上一个(2017年3月17日至2017年3月23日)etcc 下一个按钮将复制相同的内容 我试过下面的方法,但不起作用 function getPreviousWeek(){ ProHistoryCtrl.weekPrevcount = Pr

我正在尝试使用javascript日期函数获取过去7天和未来7天的日期开始数据和结束日期

例如:今天2017年3月31日,当我单击上一个按钮时,它将从上一个日期开始计算,即:开始和结束日期(2017年3月24日至2017年3月30日),再次单击上一个(2017年3月17日至2017年3月23日)etcc

下一个按钮将复制相同的内容

我试过下面的方法,但不起作用

 function getPreviousWeek(){
      ProHistoryCtrl.weekPrevcount = ProHistoryCtrl.weekPrevcount + 1;
      ProHistoryCtrl.weekPrevious  = (-6 * ProHistoryCtrl.weekPrevcount);
      getByWeek();
}

 function getNextWeek(){
      ProHistoryCtrl.weekPrevcount = ProHistoryCtrl.weekPrevcount - 1;
      ProHistoryCtrl.weekPrevious  = (-6 * ProHistoryCtrl.weekPrevcount);
      getByWeek();
}


function getByWeek(){   

      console.log("weekpreviouscount" + ProHistoryCtrl.weekPrevcount); //-6,-12,-18,-24
      console.log("weekprevious" + ProHistoryCtrl.weekPrevious); //-6,-12,-18,-24
      var d2 = new Date(); // 31.01.2017
      var d1 = new Date(d2);
      d1.setDate(d2.getDate() - 1); // 30.01.2017
      var previousWeek = '';
      var current_day = '';

      console.log("d2date" + d1.getDate());
      console.log("week2" + ProHistoryCtrl.weekPrevious)
      previousWeek = new Date(d1);
      previousWeek.setDate(d1.getDate() + ProHistoryCtrl.weekPrevious); // 30-13=17

      current_day = new Date(d1); // 30.01.2017
      current_day.setDate(d1.getDate() + ProHistoryCtrl.weekPrevious + 6); // 30-12+5=23

      console.log("currentdayprevious" + ProHistoryCtrl.weekPrevious); //-6,-12,-18,-24

      var previousWeekUTCTimestamp = Math.floor(previousWeek.getTime() / 1000);
      var currentUTC = Math.floor(current_day.getTime() / 1000);

      console.log("previousWeekUTCTimestamp" + previousWeekUTCTimestamp);
      console.log("currentUTC" + currentUTC);

      var sinceUTC = previousWeekUTCTimestamp;
      var untilUTC = currentUTC;

}
第一次是2017年3月24日至2017年3月30日,下一次是2017年3月24日至2017年3月18日


有什么想法吗?请

问题似乎出在你的数学上,你可以通过每周减去6,然后再减去额外的1来获得上一周的分数。对于-6-1=-7的第一周,这是可以的,但是对于第二周,这是(-6*2)-1=-13,但是两周应该是-14。不正确的代码是:

ProHistoryCtrl.weekPrevious  = (-6 * ProHistoryCtrl.weekPrevcount);

d1.setDate(d2.getDate() - 1);
因此,解决办法是:

 function getPreviousWeek(){
            ProHistoryCtrl.weekPrevcount = ProHistoryCtrl.weekPrevcount + 1;
            ProHistoryCtrl.weekPrevious  = (-7 * ProHistoryCtrl.weekPrevcount);
            getByWeek();
}

 function getNextWeek(){
            ProHistoryCtrl.weekPrevcount = ProHistoryCtrl.weekPrevcount - 1;
            ProHistoryCtrl.weekPrevious  = (-7 * ProHistoryCtrl.weekPrevcount);
            getByWeek();
}

function getByWeek(){   

    var d2 = new Date(); // 31.01.2017
    var d1 = new Date(d2);
    d1.setDate(d2.getDate()); // 30.01.2017
    var previousWeek = '';
    var current_day = '';

    previousWeek = new Date(d1);
    previousWeek.setDate(d1.getDate() + ProHistoryCtrl.weekPrevious); // 30-13=17

    current_day = new Date(d1); // 30.01.2017
    current_day.setDate(d1.getDate() + ProHistoryCtrl.weekPrevious + 6); // 30-12+5=23

    var previousWeekUTCTimestamp = Math.floor(previousWeek.getTime() / 1000);
    var currentUTC = Math.floor(current_day.getTime() / 1000);

    var sinceUTC = previousWeekUTCTimestamp;
    var untilUTC = currentUTC;
}

使用此功能。你不需要额外的功能

var btn=document.querySelector(“按钮”)
Date.prototype.addDays=函数(天){
this.setDate(this.getDate()+parseInt(天));
归还这个;
};
函数getDate(天){
变量日期=新日期().addDays(天);
返回日期
}
btn.addEventListener(“单击”,函数(){
var pastSevenDays=getDate(-7)
var nextSevenDays=getDate(7)
//唯一日期
console.log(过去七天.toLocaleString().slice(0,10))
console.log(nextSevenDays.toLocaleString().slice(0,10))
},false)

获取日期
您可以使用外部库吗?使用momente.js处理所有这类事情将消除许多麻烦和潜在的bug。如果你想要3月17日到3月23日,但现在得到的是18日到24日,为什么不从计算中减去一天呢?@MikeC:我弄糊涂了,这是我向任何人寻求帮助one@Whelkaholism当前位置我正苦于编写上一个逻辑..我在这里混淆了一些东西ProHistoryCtrl的定义在哪里?weekPrevcount和weekPrevious的值是多少?函数既不接受任何参数,也不返回任何值。请张贴一个最小的,有效的例子。计算一个加上或减去固定天数的日期的答案如下:。