使用当前日期生成一周的所有日期,还显示周一的周开始日期和周日的周末

Posted

技术标签:

【中文标题】使用当前日期生成一周的所有日期,还显示周一的周开始日期和周日的周末【英文标题】:Generate all dates of a week using current date also show week starting date on Monday and weekends on Sunday 【发布时间】:2016-04-19 16:21:37 【问题描述】:

使用当前日期生成一周中的所有日期,并使用 javascript 或 AngularJS 在星期一和星期日显示星期的开始日期。

    用户可以输入任何日期(任何年月) 每周应该从星期一开始,到星期日结束 它应该适用于所有年份和月份

例如:选定日期(2016 年 1 月 1 日星期五)(默认应选择当前日期)强文本

它应该显示 28/12/2015(星期一) 29/12/2015(星期二) 30/12/2015(星期三) 31/12/2015(星期四) 2016 年 1 月 1 日(星期五) 2/1/2016(星期六) 2016 年 3 月 1 日(星期日)

$('#datepicker').datepicker().datepicker("setDate", new Date());


window.onload = lastDate;

function lastDate() 
  lDate = document.getElementById('datepicker').value;

  var myDate = new Date(lDate).toLocaleDateString('en-US');
  var xDate = moment(lDate).format("D-MMM-YYYY");



  var curr = new Date(myDate); 
  var sun = curr.getDate() - curr.getDay(); 
  var sat = sun + 6; 
  var mon = sun + 1;
  var tue = sun + 2;
  var wed = sun + 3;
  var thu = sun + 4;
  var fri = sun + 5;
  var sun1 = sun + 7;
  var last = sun1;

  sunday = new Date(curr.setDate(sun)).toLocaleDateString('en-US');
  monday = new Date(curr.setDate(mon)).toLocaleDateString('en-US');
  tuesday = new Date(curr.setDate(tue)).toLocaleDateString('en-US');
  wednesday = new Date(curr.setDate(wed)).toLocaleDateString('en-US');
  thursday = new Date(curr.setDate(thu)).toLocaleDateString('en-US');
  friday = new Date(curr.setDate(fri)).toLocaleDateString('en-US');
  saturday = new Date(curr.setDate(sat)).toLocaleDateString('en-US');
  sunday1 = new Date(curr.setDate(sun1)).toLocaleDateString('en-US');
  lastday1 = new Date(curr.setDate(sun1)).toLocaleDateString('en-US');

  document.getElementById("day1").innerhtml = sunday;
  document.getElementById("day2").innerHTML = monday;
  document.getElementById("day3").innerHTML = tuesday;
  document.getElementById("day4").innerHTML = wednesday;
  document.getElementById("day5").innerHTML = thursday;
  document.getElementById("day6").innerHTML = friday;
  document.getElementById("day7").innerHTML = saturday;
  document.getElementById("day1").innerHTML = sunday1;







    <body>
  <div class="container">
    <h3>This week dates </h3>
    <input id="datepicker" class="currentDate" onchange="lastDate()">/input>

  </div>
  <div Class="container-fluid well">
    <div class="form-inline">

      <div class="form-control">
        <span class="label label-default">Monday</span>
        <span id="day2"> </span>
      </div>
      <div class="form-control">
        <span class="label label-default">Tuesday</span>
        <span id="day3"> </span>
      </div>
      <div class="form-control">
        <span class="label label-default">Wednesday</span>
        <span id="day4"> </span>
      </div>
      <div class="form-control">
        <span class="label label-default">Thursday</span>
        <span id="day5"> </span>
      </div>
      <div class="form-control ">
        <span class="label label-default">Friday</span>
        <span id="day6"> </span>
      </div>
      <div class="form-control">
        <span class="label label-default">Saturday</span>
        <span id="day7"> </span>
      </div>
      <div class="form-control">
        <span class="label label-default">Sunday</span>
        <span id="day1"></span>
      </div>

    </div>
  </div>


</body>

【问题讨论】:

你能把你写的代码贴出来吗? 你有什么问题? 欢迎来到 SO Vikas。看看Date.prototype.getDay(),尝试编写一些代码,如果遇到困难请告诉我们。如果您不需要进一步的答案,您可以回答自己的问题或将其删除。 这里是我的代码... 几天不工作(例如:2016 年 1 月 2 日)link to my code 您似乎在使用toLocaleDateString('en-US');,而问题似乎需要en-GB。这也依赖于对Intl object 的支持,因此在不支持Intl object 的浏览器中会失败(Safari)。通过转换为字符串来处理日期,然后解析字符串是可怕的,使用类似new Date(+date) 的东西,其中 date 是一个 Date 对象。 【参考方案1】:
var curr = new Date;
var Sunday = new Date(curr.setDate(curr.getDate() - curr.getDay()));
var Monday = new Date(curr.setDate(curr.getDate() - curr.getDay()+1));
var Tuesday = new Date(curr.setDate(curr.getDate() - curr.getDay()+2));
var Wednesday = new Date(curr.setDate(curr.getDate() - curr.getDay()+3));
var Thursday = new Date(curr.setDate(curr.getDate() - curr.getDay()+4));
var Friday = new Date(curr.setDate(curr.getDate() - curr.getDay()+5));
var Saturday = new Date(curr.setDate(curr.getDate() - curr.getDay()+6));


console.log(Sunday);
console.log(Monday);
console.log(Tuesday);
console.log(Wednesday);
console.log(Thursday);
console.log(Friday);
console.log(Saturday);

【讨论】:

以上是关于使用当前日期生成一周的所有日期,还显示周一的周开始日期和周日的周末的主要内容,如果未能解决你的问题,请参考以下文章

如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数

如何计算当前日期是当年的第几周

计算每一周的开始日期和结束日期

如果根据当前日期获取当前周日期和当前周日期

C#中用当前日期算周的若干问题?

Excel中如何计算日期所在的这年的第几周,以周一作为一周的第一天