関数に日付が来る場合、週末かどうかはどうすればわかりますか?
回答:
var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
d
!= day
:)私はむしろそれdayOfWeek
を呼びたい、それはOPにとってより理にかなっているでしょう。
getDay
現在のタイムゾーン設定に従って、日曜日には常に0を返し、土曜日などには6を返す必要があります。(そして、要件に応じて「週末」を構成するものを決定するのはOP
===
の==
場合、絶対値を比較するときではなく、そうする方がおそらく良いでしょう。重要ではありませんが、ベストプラクティスです。
var isWeekend = yourDateObject.getDay()%6==0;
.getDay()
、別の値になるかどうか、またはの定義isWeekend
が間違っているかどうかです。それが変数についてなら、私は気にしません。0は常に日曜日になると思うので、私にとっては問題ありません。
短くて甘い。
var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);
正解を試しましたが、特定のロケールでは機能しましたが、すべてでは機能しませんでした。
momentjs Docs:weekday 返される数は、ロケールのinitialWeekDayによって異なるため、Monday = 0 | 日曜日= 6
そこで、ロジックを変更して、実際のDayString( 'Sunday')をチェックします。
const weekday = momentObject.format('dddd'); // Monday ... Sunday
const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';
このようにして、ロケールに依存しません。
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).
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メソッドですが、指定されていません。
私はここでほとんどの回答をテストしましたが、タイムゾーン、ロケール、または週の始まりが日曜日または月曜日の場合は常に問題があります。
以下は、平日の名前と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;
現在のバージョンでは、
var day = yourDateObject.day();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
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);
日付オブジェクトは«中にあるかどうかをブール出力以下のオープニング週末を除く»時間を、との間毎晩時間を除く23H00
と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)
<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()]
)
モジュロの前に1を追加するだけです
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;