我如何使用momentjs找到最后一个星期一?

时间:2015-12-27 09:13:56

标签: javascript date momentjs

我需要使用一些需要在周一(而不是周日)开始一周的逻辑。

我可以使用一周的功能开始:

moment().tz('America/Los_Angeles').startOf('week').add(1, 'day')

然而,如果是星期天,我需要使用上周的日期并加1以获得星期一。

我希望有一个更容易获得"最后一个星期一"无论日期是什么。

4 个答案:

答案 0 :(得分:38)

我找到了答案(documented),但有一个isoWeek将在星期一而不是星期日开始。

周日开始一周:

moment().startOf('week');

周一开始一周:

moment().startOf('isoWeek');

答案 1 :(得分:2)

Dunno关于moment.js,但是在普通的javascript中,您可以通过获取日期数字获得上一个星期一,如果是星期日则将其设置为7,然后从日期减去日期数减1。如果当天是星期一,则返回相同的日期。

e.g。

var d = new Date();
d.setDate(d.getDate() + 1 - (d.getDay() || 7));
document.write(d)

答案 2 :(得分:0)

 // when Monday is the first day of the week
moment().weekday(-7); // last Monday

请参阅官方文档here

答案 3 :(得分:0)

您可以尝试查找当前星期之前或之后的星期几:

  public static SUN = 0
  public static MON = 1
  public static TUE = 2
  public static WED = 3
  public static THU = 4
  public static FRI = 5
  public static SAT = 6

  //@return: string like Jan 30
  //@param : weekAgo number of weeks past atual wanted
  //@param : dayOfWeek number 
  //  SUN = 0
  //  MON = 1
  //  TUE = 2
  //  WED = 3
  //  THU = 4
  //  FRI = 5
  //  SAT = 6
  public static pastDayOfWeek_MMMDD(weekAgo:number, dayOfWeek:number): String {
     return moment().isoWeekday(7+((weekAgo+1)*-7)+dayOfWeek).format('MMM DD');
  }


  //@return: string like Jan 30
  //@param : weekAgo number of weeks before atual wanted
  //@param : dayOfWeek number 
  //  SUN = 0
  //  MON = 1
  //  TUE = 2
  //  WED = 3
  //  THU = 4
  //  FRI = 5
  //  SAT = 6
  public static nextDayOfWeek_MMMDD(weekBefore:number, dayOfWeek:number): String {
    return moment().isoWeekday(-7+((weekBefore+1)*7)+dayOfWeek).format('MMM DD');
  }