Wenn ich ein Datum habe, das in eine Funktion kommt, wie kann ich dann feststellen, ob es ein Wochenendtag ist?
javascript
date
Leora
quelle
quelle
Antworten:
var day = yourDateObject.getDay(); var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
quelle
d
! =day
:) Ich würde es lieber nennendayOfWeek
, es wäre sinnvoller für OP.getDay
sollte immer 0 für Sonntag und 6 für Samstag usw. zurückgeben, entsprechend den aktuellen Zeitzoneneinstellungen. (Und dann ist es an der OP zu entscheiden, was ein "Wochenende" gemäß ihren Anforderungen===
anstatt==
absolute Werte zu vergleichen. Nicht entscheidend, sondern nur Best Practice.var isWeekend = yourDateObject.getDay()%6==0;
quelle
.getDay()
sich ein anderer Wert ergibt oder ob die Definition vonisWeekend
falsch wäre. Wenn es um die Variable geht, ist mir das egal. Ich denke, eine 0 wird immer Sonntag sein, also ist es gut für mich.Kurz und bündig.
var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);
quelle
Ich habe die richtige Antwort ausprobiert und sie hat für bestimmte Ländereinstellungen funktioniert, aber nicht für alle:
In momentjs Docs: Wochentag Die zurückgegebene Nummer hängt vom Gebietsschema initialWeekDay ab, also Montag = 0 | Sonntag = 6
Also ändere ich die Logik, um nach dem tatsächlichen DayString ('Sonntag') zu suchen.
const weekday = momentObject.format('dddd'); // Monday ... Sunday const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';
Auf diese Weise sind Sie unabhängig vom Gebietsschema.
quelle
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).
Update 2020
Es gibt jetzt mehrere Möglichkeiten, dies zu erreichen.
1) Verwenden Sie die
day
Methode, um die Tage von 0-6 zu erhalten:const day = yourDateObject.day(); // or const day = yourDateObject.get('day'); const isWeekend = (day === 6 || day === 0); // 6 = Saturday, 0 = Sunday
2) Verwenden Sie die
isoWeekday
Methode, um die Tage von 1-7 zu erhalten:const day = yourDateObject.isoWeekday(); // or const day = yourDateObject.get('isoWeekday'); const isWeekend = (day === 6 || day === 7); // 6 = Saturday, 7 = Sunday
quelle
.isoWeekday()
ist eine moment.js-Methode, aber nicht angegeben.var d = new Date(); var n = d.getDay(); if( n == 6 ) console.log("Its weekend!!"); else console.log("Its not weekend");
quelle
Ich habe die meisten Antworten hier getestet und es gibt immer Probleme mit der Zeitzone, dem Gebietsschema oder wenn der Wochenbeginn entweder Sonntag oder Montag ist.
Im Folgenden finden Sie eine , die ich finde , ist sicherer, da es auf dem beruht Namen des Wochentages und auf dem en locale.
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;
quelle
In der aktuellen Version sollten Sie verwenden
var day = yourDateObject.day(); var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
quelle
Verwenden Sie die Methode .getDay () für das Date-Objekt, um den Tag abzurufen.
Überprüfen Sie, ob es 6 (Samstag) oder 0 (Sonntag) ist.
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);
quelle
Im Folgenden wird ein Boolescher Wert ausgegeben, der angibt, ob sich ein Datumsobjekt während der Öffnungszeiten (ohne Wochenendtage) und ohne Nachtstunden zwischen
23H00
und befindet9H00
, wobei der Zeitzonenversatz des Clients berücksichtigt wird.Natürlich behandelt dies keine Sonderfälle wie Feiertage, aber nicht weit zu;)
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?
Alternativ können wir Folgendes verwenden , um den Wochentag als Gebietsschema für die menschliche Zeichenfolge abzurufen:
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) )
Vorsicht,
new Intl.DateTimeFormat
in Schleifen ist es langsam, ein einfaches assoziatives Array läuft viel schneller:console.log( ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.now()).getDay()] )
quelle
Fügen Sie einfach 1 vor Modulo hinzu
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;
quelle