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

时间:2010-08-23 21:20:57

标签: javascript date

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

11 个答案:

答案 0 :(得分:129)

var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0);    // 6 = Saturday, 0 = Sunday

答案 1 :(得分:39)

var isWeekend = yourDateObject.getDay()%6==0;

答案 2 :(得分:8)

简短又甜蜜。

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

答案 3 :(得分:2)

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

在momentjs文档中:weekday 返回的数字取决于语言环境initialWeekDay,因此Monday = 0 |星期日= 6

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

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

通过这种方式,您可以独立于语言环境。

答案 4 :(得分:1)

更新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

答案 5 :(得分:0)

var d = new Date();
var n = d.getDay();
 if( n == 6 )
console.log("Its weekend!!");
else
console.log("Its not weekend");

答案 6 :(得分:0)

我已经在这里测试了大多数答案,并且时区,区域设置或每周的开始时间是星期日或星期一总是存在一些问题。

以下是我认为更安全的一种,因为它依赖于工作日的名称 en 语言环境。

let startDate = start.clone(),
    endDate = end.clone();

let days = 0;
do {
    const weekday = startDate.locale('en').format('dddd'); // Monday ... Sunday
    if (weekday !== 'Sunday' && weekday !== 'Saturday') days++;
} while (startDate.add(1, 'days').diff(endDate) <= 0);

return days;

答案 7 :(得分:0)

在当前版本中,您应该使用

    var day = yourDateObject.day();
    var isWeekend = (day === 6) || (day === 0);    // 6 = Saturday, 0 = Sunday

答案 8 :(得分:0)

在Date对象上使用.getDay()方法获取日期。

检查它是6(星期六)还是0(星期日)

var givenDate = new Date('2020-07-11');
var day = givenDate.getDay();
var isWeekend = (day === 6) || (day === 0) ? 'It's weekend': 'It's working day';
    
console.log(isWeekend);

答案 9 :(得分:-1)

只需在modulo

之前添加1
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;

答案 10 :(得分:-1)

以下内容输出一个布尔值,表示日期对象是否在« 开放 »小时内(不包括周末)以及23H00到{{ 1}},同时考虑到客户端的时区偏移量。

当然,这不处理特殊情况,例如假期,但不远;)

9H00
let t = new Date(Date.now()) // Example Date object
let zoneshift = t.getTimezoneOffset() / 60
let isopen = ([0,6].indexOf(t.getUTCDay()) === -1) && (23 + zoneshift  < t.getUTCHours() === t.getUTCHours() < 9 + zoneshift)

// Are we open?
console.log(isopen)

或者,要获取星期几作为区域设置 Human 字符串,我们可以使用:

<b>We are open all days between 9am and 11pm.<br>
Closing the weekend.</b><br><hr>

Are we open now?

请注意let t = new Date(Date.now()) // Example Date object console.log( new Intl.DateTimeFormat('en-US', { weekday: 'long'}).format(t) , new Intl.DateTimeFormat('fr-FR', { weekday: 'long'}).format(t) , new Intl.DateTimeFormat('ru-RU', { weekday: 'long'}).format(t) )在循环内运行缓慢,简单的关联数组运行起来会更快:

new Intl.DateTimeFormat