【问题标题】:Generate an array of weeks since 2017 till now using moment.js使用 moment.js 生成从 2017 年至今的周数数组
【发布时间】:2018-02-06 06:16:11
【问题描述】:

我需要列出从 2017 年到现在的周数组。我的一周从星期一开始,到星期日结束,我尝试在 moment.js 中做,

const startDate = moment().isoWeekday('Monday').format('DD-MM-YYYY');
const endDate = moment().isoWeekday('Sunday').format('DD-MM-YYYY');

我试图用这个来获取星期的开始日期和结束日期,但我不知道下一步的流程。

注意我的数组列表以["02-01-2017", "08-01-2017"] 开头,以本周结束将是最后一个。

const result = [["02-01-2017", "08-01-2017"],...... ["05-01-2018", "11-01-2018"]]

【问题讨论】:

  • ["02-01-2017", "08-01-2017"] 这是你输入的吗?
  • @rijin 谢谢回复不,这不是我的输入,我需要从 2017 年到当前周获取开始周日期和结束周日期,我向您展示了 2017 年的开始日期数组
  • 所以,输入是 2017 年和星期一 => 返回从 2017 年到今天的所有星期一?
  • @rijin 我的一周以Monday 开始,以Sunday 结束。我需要直到本周的所有开始日期和结束日期,这将是我的结果const result = {["02-01-2017", "08-01-2017"] .... ["05-01-2018", "11-01-2018"]}

标签: javascript momentjs


【解决方案1】:

您可以将您的开始日期初始化为 2017 年 1 月 1 日的第一个工作日,然后迭代到所有小于今天的日期,并继续在数组中添加天数。

var weeks = [];
var startDate = moment(new Date(2017,0,1)).isoWeekday(8);
if(startDate.date() == 8) {
    startDate = startDate.isoWeekday(-6)
}
var today = moment().isoWeekday('Sunday');
while(startDate.isBefore(today)) {
  let startDateWeek = startDate.isoWeekday('Monday').format('DD-MM-YYYY');
  let endDateWeek = startDate.isoWeekday('Sunday').format('DD-MM-YYYY');
  startDate.add(7,'days');
  weeks.push([startDateWeek,endDateWeek]);
}
console.log(weeks)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

【讨论】:

  • 它对我有用,但我现在需要到当前周我要到前一周的开始日期和结束日期才可以显示到当前周?
  • 更新的解决方案。
【解决方案2】:

这样的事情会有帮助吗?

let startDate = moment('2017-01-01').startOf('week').format('YYYY-MM-DD');
let endDate = moment(new Date()).startOf('week').format('YYYY-MM-DD');

const weeks = [];
while (startDate <= endDate) {
  weeks.push(startDate);
  startDate = moment(startDate).add(7, 'days').format('YYYY-MM-DD');
}

console.log('weeks:', weeks);

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 2013-09-29
    • 2020-01-19
    • 2018-04-25
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多