如何在javascript中确定日期是否是周末

IT技术 javascript date
2021-02-24 19:43:22

如果我有一个日期进入一个函数,我怎么知道它是否是周末?

6个回答
var dayOfWeek = yourDateObject.getDay();
var isWeekend = (dayOfWeek === 6) || (dayOfWeek  === 0); // 6 = Saturday, 0 = Sunday
@csvan:getDay根据当前的时区设置,周日应始终返回 0,周六等应始终返回 6。(然后由 OP 根据他们的要求决定什么构成“周末”。)
2021-04-23 19:43:22
某些国家/地区将周五和周六作为周末,因此此答案适用于 Christian Stackoverflow :-p
2021-04-28 19:43:22
这是不是对所有时区真。例如,在法国,一周的第一天是星期一,而不是星期日。像 Moment 这样的现代图书馆弥补了这一点。
2021-05-02 19:43:22
d!= day:) 我宁愿称之为dayOfWeek,这对 OP 来说更有意义。
2021-05-04 19:43:22
对于 js,如果您这样做===而不是==在比较绝对值时这样做可能会更好不是关键,只是最佳实践。
2021-05-05 19:43:22
var isWeekend = yourDateObject.getDay()%6==0;
0%6(周日)和 6%6(周六)的模数均为 0
2021-04-20 19:43:22
@Guy 那么问题是是否.getDay()会产生另一个值,或者 的定义isWeekend是否错误。如果是关于变量,我不在乎。我想 0 永远是星期天,所以对我来说很好。
2021-04-26 19:43:22
一些国家将周五和周六作为周末
2021-04-28 19:43:22
这表示如果是星期六则返回 true
2021-05-03 19:43:22
除了自愿混淆之外,我认为这种技术没有任何意义。我个人更喜欢 LukeH 的回答。在这种情况下,我们可以使用 6 的模而不是 7 来解决我们的问题,这只是偶然的。
2021-05-04 19:43:22

简短而甜蜜。

var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);

我尝试了正确的答案,它适用于某些语言环境,但不适用于所有语言环境:

在 momentjs 文档中:weekday 返回的数字取决于 locale initialWeekDay,所以 Monday = 0 | 星期日 = 6

所以我改变了逻辑来检查实际的 DayString('Sunday')

const weekday = momentObject.format('dddd'); // Monday ... Sunday
const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';

这样你就独立于语言环境。

@Guy 您需要调整代码以满足国家/地区的需求。根据维基,你上面链接的其他一些国家有一个周末。Some countries have adopted a one-day weekend, i.e. either Sunday only (in seven countries), Friday only (in Djibouti, Iran, Palestine and Somalia), or Saturday only (in Nepal).
2021-05-09 19:43:22
一些国家将周五和周六作为周末
2021-05-13 19:43:22

2020 年更新

现在有多种方法可以实现这一点。

1)使用day方法获取0-6天:

const day = yourDateObject.day();
// or const day = yourDateObject.get('day');
const isWeekend = (day === 6 || day === 0);    // 6 = Saturday, 0 = Sunday

2)使用isoWeekday方法获取1-7天:

const day = yourDateObject.isoWeekday();
// or const day = yourDateObject.get('isoWeekday');
const isWeekend = (day === 6 || day === 7);    // 6 = Saturday, 7 = Sunday
.isoWeekday() 是一个 moment.js 方法,但未指定。
2021-04-21 19:43:22