javascriptで日付が週末かどうかを判断する方法[終了]


81

関数に日付が来る場合、週末かどうかはどうすればわかりますか?


答えは国によって週末を考慮する必要がありますので、一部の国では(私は答えに言及してきたように)週末と金曜日と土曜日を持っていることを注意en.wikipedia.org/wiki/Workweek_and_weekend
ガイ

回答:


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

9
d!= day:)私はむしろそれdayOfWeekを呼びたい、それはOPにとってより理にかなっているでしょう。
BalusC 2010

4
これは、すべてのタイムゾーンに当てはまるわけではありません。たとえば、フランスでは、週の最初の日は日曜日ではなく月曜日になります。Momentのような現代のライブラリはこれを補います。
csvan 2015年

7
@csvan:getDay現在のタイムゾーン設定に従って、日曜日には常に0を返し、土曜日などには6を返す必要があります。(そして、要件に応じて「週末」を構成するものを決定するのはOP
次第

1
js=====場合、絶対値を比較するときではなく、そうする方がおそらく良いでしょう。重要ではありませんが、ベストプラクティスです。
dylanh724 2018年

1
ecma-international.org/ecma-262/6.0/#sec-week-dayを参照してください。0は常に日曜日に等しい
TreeAndLeaf 2018年

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

これは、土曜日の場合はtrueを返すと言います
Gianfranco P.

13
0%6(日曜日)と6%6(土曜日)はどちらも係数が0です
kennebec 2013年

8
自発的に混乱することを除いて、私はこのテクニックに何の意味もありません。私は個人的にLukeHの答えを好みます。この場合、問題を解決するために7ではなく6のモジュロを使用できるのは偶然です。
アンリラピエール2014

一部の国では週末と金曜日と土曜日を持っている
ガイ

@Guyの場合、問題は.getDay()、別の値になるかどうか、またはの定義isWeekendが間違っているかどうかです。それが変数についてなら、私は気にしません。0は常に日曜日になると思うので、私にとっては問題ありません。
C4dの


5

正解を試しましたが、特定のロケールでは機能しましたが、すべてでは機能しませんでした。

momentjs Docs:weekday 返される数は、ロケールのinitialWeekDayによって異なるため、Monday = 0 | 日曜日= 6

そこで、ロジックを変更して、実際のDayString( 'Sunday')をチェックします。

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

このようにして、ロケールに依存しません。


一部の国では週末と金曜日と土曜日を持っている
ガイ

@Guy国のニーズに合わせてコードを調整する必要があります。あなたが上にリンクしているウィキによると、他のいくつかの国では週末が1日あります。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).
T044 3519年

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

.isoWeekday()moment.jsメソッドですが、指定されていません。
NVRM

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

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;


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);

SOへようこそ。回答をフォーマットするときは、さらに注意してください。通常のテキストはコードブロックに入るべきではありません。
Calculuswhiz

-1

日付オブジェクトは«中にあるかどうかをブール出力以下のオープニング週末を除く»時間を、との間毎晩時間を除く23H009H00、クライアントのタイムゾーンオフセットを考慮に入れながら、。

もちろん、これは休日のような特別な場合を処理しませんが、そう遠くはありません;)

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)
<b>We are open all days between 9am and 11pm.<br>
Closing the weekend.</b><br><hr>

Are we open now?

または、曜日をロケールのHuman文字列として取得するには、次を使用できます。

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ループ内は遅いので注意してください。単純な連想配列ははるかに高速に実行されます。

console.log(
  ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.now()).getDay()]
)


-3

モジュロの前に1を追加するだけです

var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;

5
これは、日曜日を週末全体と見なす場合にのみ機能します。
すべての労働者は必須です

@cpburnzほとんどの国がそうしています。週を日曜日から始めるのはごくわずかです。
bokkie 2014

2
@bokkieそれはあなたの答えに追加されるべき重要な情報です。
すべての労働者は不可欠です2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.