在javascript中获取一周的前一天和第二天

Get the previous and next days of the week in javascript

本文关键字:前一天 第二天 一周 javascript 获取      更新时间:2023-09-26

我有这段代码,获取当前日期,然后获取一周中的天数。有时这个代码不工作,比如今天是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用户点击上一步,那么firstDate必须是09/19,lastDate必须是09/25

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

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

我建议使用库来完成这样的任务。例如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 ')

详情请参阅:http://momentjs.com/

您可以使用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)