我如何使用 momentjs 找到上周一?
How do I find last monday using momentjs?
我需要处理一些要求一周从星期一(而不是星期日)开始的逻辑。
我可以使用周开始功能:
moment().tz('America/Los_Angeles').startOf('week').add(1, 'day')
但是如果是星期天,我需要使用上周的日期并加 1 得到星期一。
我希望无论日期是什么,都可以更轻松地获得 "last monday"。
// when Monday is the first day of the week
moment().weekday(-7); // last Monday
参考官方文档here
不知道 moment.js,但在简单的 javascript 中,您可以通过获取天数来获取前一个星期一,如果是星期日则将其设置为 7,然后从中减去天数减一日期。如果当天是星期一,则 returns 是同一天。
例如
var d = new Date();
d.setDate(d.getDate() + 1 - (d.getDay() || 7));
document.write(d)
我找到了答案 (documented),但有一个 isoWeek
将从星期一而不是星期日开始一周。
周日开始一周:
moment().startOf('week');
星期一开始一周:
moment().startOf('isoWeek');
要查找最后一个星期一,只需使用
moment().isoWeekday(-6); // ISO day of the week with 1 being Monday and 7 being Sunday.
或区域设置感知版本
moment().weekday(-7); // when Monday is the first day of the week
您可以试试这个来查找本周之前或之后的任何一天:
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');
}
我需要处理一些要求一周从星期一(而不是星期日)开始的逻辑。
我可以使用周开始功能:
moment().tz('America/Los_Angeles').startOf('week').add(1, 'day')
但是如果是星期天,我需要使用上周的日期并加 1 得到星期一。
我希望无论日期是什么,都可以更轻松地获得 "last monday"。
// when Monday is the first day of the week
moment().weekday(-7); // last Monday
参考官方文档here
不知道 moment.js,但在简单的 javascript 中,您可以通过获取天数来获取前一个星期一,如果是星期日则将其设置为 7,然后从中减去天数减一日期。如果当天是星期一,则 returns 是同一天。
例如
var d = new Date();
d.setDate(d.getDate() + 1 - (d.getDay() || 7));
document.write(d)
我找到了答案 (documented),但有一个 isoWeek
将从星期一而不是星期日开始一周。
周日开始一周:
moment().startOf('week');
星期一开始一周:
moment().startOf('isoWeek');
要查找最后一个星期一,只需使用
moment().isoWeekday(-6); // ISO day of the week with 1 being Monday and 7 being Sunday.
或区域设置感知版本
moment().weekday(-7); // when Monday is the first day of the week
您可以试试这个来查找本周之前或之后的任何一天:
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');
}