Ich brauche den schnellsten Weg, um den ersten Tag der Woche zu erreichen. Zum Beispiel: Heute ist der 11. November und ein Donnerstag; und ich möchte den ersten Tag dieser Woche, den 8. November, und einen Montag. Ich brauche die schnellste Methode für die MongoDB-Kartenfunktion. Irgendwelche Ideen?
161
Antworten:
Mit der
getDay
Methode der Datumsobjekte können Sie die Anzahl der Wochentage ermitteln (0 = Sonntag, 1 = Montag usw.).Sie können dann diese Anzahl von Tagen plus eins subtrahieren, zum Beispiel:
quelle
diff = d.getDate() - day;
d.setHours(0); d.setMinutes(0); d.setSeconds(0);
Ich bin mir nicht sicher, wie die Leistung verglichen wird, aber das funktioniert.
Oder als Funktion:
quelle
date = new Date(date);
die getMonday-Funktion als erste Zeile einzufügen.Schauen Sie sich Date.js an
quelle
Date.parse('last monday');
Die Antwort von CMS ist richtig, geht jedoch davon aus, dass Montag der erste Tag der Woche ist.
Chandler Zwolles Antwort ist richtig, spielt aber mit dem Date-Prototyp.
Andere Antworten, die mit Stunden / Minuten / Sekunden / Millisekunden spielen, sind falsch.
Die folgende Funktion ist korrekt und nimmt ein Datum als ersten Parameter und den gewünschten ersten Wochentag als zweiten Parameter (0 für Sonntag, 1 für Montag usw.). Hinweis: Die Stunden, Minuten und Sekunden werden auf 0 gesetzt, um den Beginn des Tages zu haben.
quelle
Das wird gut funktionieren.
quelle
Ich benutze das
quelle
Diese Funktion verwendet die aktuelle Millisekundenzeit, um die aktuelle Woche zu subtrahieren, und subtrahiert dann eine weitere Woche, wenn das aktuelle Datum auf einem Montag liegt (Javascript zählt ab Sonntag).
Ich habe es getestet, wenn die Woche von einem Monat zum anderen (und auch von Jahren) reicht, und es scheint richtig zu funktionieren.
quelle
Guten Abend,
Ich bevorzuge nur eine einfache Erweiterungsmethode:
Sie werden feststellen, dass dies tatsächlich eine andere Erweiterungsmethode verwendet, die ich verwende:
Wenn Ihre Wochen am Sonntag beginnen, übergeben Sie eine "0" für den Parameter pStartOfWeek wie folgt:
var mThisSunday = new Date().startOfWeek(0);
Wenn Ihre Wochen am Montag beginnen, geben Sie für den Parameter pStartOfWeek eine "1" ein:
var mThisMonday = new Date().startOfWeek(1);
Grüße,
quelle
Erster Tag der Woche
Um das Datum des ersten Wochentags von heute zu erhalten, können Sie Folgendes verwenden:
Oder um den letzten Tag der Woche von heute zu bekommen:
* Abhängig von Ihrer Zeitzone muss der Wochenanfang nicht am Sonntag beginnen, sondern kann am Freitag, Samstag, Montag oder an jedem anderen Tag beginnen, auf den Ihre Maschine eingestellt ist. Diese Methoden werden das erklären.
* Sie können es auch mit folgender
toISOString
Methode formatieren :getLastSunday().toISOString()
quelle
setDate () hat Probleme mit Monatsgrenzen, die in den obigen Kommentaren angegeben sind. Eine saubere Problemumgehung besteht darin, den Datumsunterschied mithilfe von Epochenzeitstempeln anstelle der (überraschend kontraintuitiven) Methoden für das Date-Objekt zu ermitteln. Dh
quelle
Hier ist meine Lösung:
Jetzt können Sie das Datum anhand des zurückgegebenen Array-Index auswählen.
quelle
Ein Beispiel für die rein mathematische Berechnung ohne
Date
Funktionen.quelle
eine allgemeinere Version davon ... dies gibt Ihnen jeden Tag in der aktuellen Woche basierend auf dem von Ihnen angegebenen Tag.
quelle
Check out: moment.js
Beispiel:
Bonus: Funktioniert auch mit node.js
quelle
moment().startOf('week')
moment().startOf("week")
abhängig von den Ländereinstellungen möglicherweise das Datum des vorherigen Sonntags angegeben wird. In diesem Fall verwenden Siemoment().startOf('isoWeek')
stattdessen: runkit.com/embed/wdpi4bjwh6rtstartOf()
: momentjs.com/docs/#/manipulating/start-of