Wenn ich ein Datum habe, das in eine Funktion kommt, wie kann ich dann feststellen, ob es ein Wochenendtag ist?
Wenn ich ein Datum habe, das in eine Funktion kommt, wie kann ich dann feststellen, ob es ein Wochenendtag ist?
Antworten:
var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
d
! = day
:) Ich würde es lieber nennen dayOfWeek
, 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;
.getDay()
sich ein anderer Wert ergibt oder ob die Definition von isWeekend
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);
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.
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
.isoWeekday()
ist eine moment.js-Methode, aber nicht angegeben.
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;
In der aktuellen Version sollten Sie verwenden
var day = yourDateObject.day();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
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);
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 befindet 9H00
, 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()]
)
Fügen Sie einfach 1 vor Modulo hinzu
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;