Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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_Jquery - Fatal编程技术网

用javascript获取一周中的前几天和下几天

用javascript获取一周中的前几天和下几天,javascript,jquery,Javascript,Jquery,我有一段代码,可以得到当前日期,然后还可以得到一周中的几天。 有时这个代码不起作用,例如,今天是08/15,我会得到08/13。 我还需要一个函数来获取一周中的前几天和下几天 var self = this; var curr = new Date; self.mult = 0; self.firstDate = new Date; self.lastDate = new Date; var first = curr.getDate() - (curr.getDay()-

我有一段代码,可以得到当前日期,然后还可以得到一周中的几天。 有时这个代码不起作用,例如,今天是08/15,我会得到08/13。 我还需要一个函数来获取一周中的前几天和下几天

var self = this;
var curr = new Date;
self.mult = 0;
    self.firstDate = new Date;
    self.lastDate = new Date;
    var first = curr.getDate() - (curr.getDay()-1);
    var last = first + 6; 
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true));
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true));
这是查看一周前几天的功能

var self= this;
    var curr = new Date;
    self.mult(self.mult()-7);
    var first = curr.getDate() - (curr.getDay()-1) + self.mult();
    var last = first + 5;
    if(self.mult() <= 0){
        last = last + 1;
    }
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true));
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true));
var self= this;
    var curr = new Date;
    self.mult(self.mult()+7);
    var first = curr.getDate() - (curr.getDay()-1) + self.mult();
    var last = first + 5;
    self.firstDate(Utils.dateFormat(new Date(curr.setDate(first)),"%Y-%m-%d", true));
    self.lastDate(Utils.dateFormat(new Date(curr.setDate(last)),"%Y-%m-%d", true));
我不确定,但我认为这周的前几天才是问题所在

下面是一个示例情况

情景1: 用户访问一个页面,今天是09/15 那么第一个日期必须是09/12,最后一个日期必须是09/18 用户单击“下一步”,则第一个日期必须是09/19,最后一个日期必须是09/25 用户再次单击“下一步”,第一个日期是09/26,最后一个日期是10/02 用户单击“上一步”,则第一个日期必须是09/19,最后一个日期必须是09/25

情景2: 用户访问一个页面,今天是09/15 那么第一个日期必须是09/12,最后一个日期必须是09/18 用户单击“上一步”,则第一个日期必须为09/5,最后一个日期为09/11 用户再次单击“上一步”,则第一个日期必须是08/29,最后一个日期必须是09/4 用户单击“下一步”,则第一个日期必须是09/5,最后一个日期必须是09/11

有人能回答一个可以做我的场景的代码吗

您可以使用
setDate()

例如:

var a = new Date();
console.log(a)
//Thu Sep 15 2016 10:22:25 GMT+0200 (CEST)
a.setDate(a.getDate()+1);
console.log(a)
//Fri Sep 16 2016 10:22:25 GMT+0200 (CEST)

我建议对这样的任务使用库。例如,moment.js

从现在开始的一周

moment(new Date()).startOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ')
moment(new Date()).endOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ')
从现在开始的一周结束

moment(new Date()).startOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ')
moment(new Date()).endOf('isoWeek').format('MMMM Do YYYY, h:mm:ss ')
有关更多详细信息,请参阅:

为什么要将
this
放入变量
self
?@evolutionxbox当“this”在
$中被上下文更改时,保留“this”是一种标准方法。每个
循环,
this
是循环内的值,而
self
仍然是循环外的
this
。这里没有什么意义,但考虑到缩进,我想为了简洁起见,还有其他代码没有包括在内。@freedomn-m谢谢。我已经知道你说了什么。只是OP无缘无故地使用它。但是我如何才能得到一周的第一天(周一)和最后一天(周日)?