我怎样才能在 javascript 中获取从周一到周日的上周日期

How can I get last week date starting monday to sunday in javascript

本文关键字:周日 周日期 日期 周一 获取 javascript      更新时间:2023-09-26

我想要一个javascript函数,它给我start_date作为上周星期一日期,end_date为上周星期日日期。例如,今天是 03/09/2016,所以我想要start_date = 02/29/2016end_date = 03/06/2016

到目前为止,我已经将代码编写为

        function GetLastWeekDate(){
        start_date = new Date();
        start_date.setHours(0,0,0,0);
        end_date = new Date();
        var date=null;
        var curr = date ? new Date(date) : new Date();
        var first = curr.getDate() - curr.getDay("monday"),
             last  = first + 6;
         start_date.setDate( first );
         end_date. setDate( last );
         }

(function() {
     var original = Date.prototype.getDay;
    var daysOfWeek = {
    sunday: 0,
    monday: 1,
    tuesday: 2,
    wednesday: 3,
    thursday: 4,
    friday: 5,
    saturday: 6,
    };
     Date.prototype.getDay = function(weekBegins) {
      weekBegins = (weekBegins || "sunday").toLowerCase();
        return (original.apply(this) + 7 - daysOfWeek[weekBegins]) % 7;
      };
    })();

但它给我的日期是

    03/07/2016 and 03/13/2016

如何解决此问题以获取所需的日期?

如果你有很多日期处理要做,我只能强烈建议你利用这个时刻.js库。

在这种情况下,日期将是:

var startDate = moment().subtract(1, 'week').startOf('week');
var endDate = moment().subtract(1, 'week').endOf('week');

在这里你可以看到它的实际效果:

document.addEventListener('DOMContentLoaded', function() {
  document.getElementById("fromDate").textContent = moment().subtract(1, "week").startOf("week");
  document.getElementById("toDate").textContent = moment().subtract(1, "week").endOf("week");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.2/moment.min.js"></script>
<html>
  <body>
    <p>From : <span id="fromDate"></span></p>
    <p>To : <span id="toDate"></span></p>
  </body>
</html>

如果您只想要没有任何外部库的普通 js 解决方案。您可以改为尝试此操作。

var dateNow = new Date();
var firstDayOfTheWeek = (dateNow.getDate() - dateNow.getDay()) + 1; // Remove + 1 if sunday is first day of the week.
var lastDayOfTheWeek = firstDayOfTheWeek + 6;
var firstDayOfLastWeek = new Date(dateNow.setDate(firstDayOfTheWeek - 7));
var lastDayOfLastWeek = new Date(dateNow.setDate(lastDayOfTheWeek - 7));

在上述解决方案中,firstDataOfLastWeek将是前一周的星期一,而Last DayOfLastWeek将是前一周的星期日。