【问题标题】:How to get friday to friday weeks from two date range using moment如何使用时刻从两个日期范围获得星期五到星期五的星期
【发布时间】:2019-05-15 08:53:38
【问题描述】:

我试图将周开始设为星期五,将结束日期设为星期五,我尝试使用 startOf/endOf week(week/isoweek) 但失败了。有什么方法可以让我使用时刻将星期五作为一周的开始和星期五作为一周的结束。

Moment(date).startOf('week'); // 或等周

输出应该是, 星期五日期

请求数据: 第一个日期= 05-09-2019 结束日期= 05-15-2019(当前日期)

预期输出: [ { 周开始:2019 年 5 月 3 日, 周末:05-10-2019 }, { 周开始:2019 年 5 月 10 日, 周末:05-17-2019 } ]

【问题讨论】:

    标签: momentjs


    【解决方案1】:

    没有设置星期几的选项。但是您可以使用

    获取上周五的日期
    moment().weekday(-2).format("YYYY-DD-MM")
    

    【讨论】:

    • 在那种情况下,如果我有日期的话。时刻(05-11-2019).weekday(-2);输出:05-03-2019。这是错误的。应该是 05-10-2019 (weekstar:friday) 和 (weekend: 05-17-2019)
    【解决方案2】:

    您可以使用以下方式更新区域设置的周开始:

    moment.updateLocale(moment.locale(), { week: { dow: 5 } })
    moment().startOf('week').toString(); // Fri May 10 2019 00:00:00 GMT+0100
    

    【讨论】:

      【解决方案3】:

      您可以执行一个简短的自定义函数,以始终根据传递的isoWeekDay 为您提供一周的开始和结束时间:

      let getCustomWeek = (dayOfWeek=7, date=new Date()) => {
        let firstDay, lastDay, passedDay = moment(date).isoWeekday(dayOfWeek)
      	
        firstDay = moment(passedDay).subtract(1, 'week')
        lastDay = moment(firstDay).add(1, 'week')
      	
        return { start: firstDay.format(), end: lastDay.format() }
      }
      
      let dateRange = ['05-09-2019', '05-15-2019']
      
      console.log('Friday: ', dateRange.map(d => getCustomWeek(5, new Date(d))))
      console.log('Wednesday: ', dateRange.map(d => getCustomWeek(3, new Date(d))))
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多