Wie erhalte ich die aktuelle Wochennummer des Jahres wie PHPs date('W')
?
Es sollte die ISO-8601-Wochenzahl des Jahres sein, Wochen ab Montag.
javascript
date
PeeHaa
quelle
quelle
Antworten:
Sie sollten in der Lage sein, hier zu bekommen, was Sie wollen:
http://www.merlyn.demon.co.uk/js-date6.htm#YWD.Ein besserer Link auf derselben Site ist:
Arbeiten mit Wochen.Bearbeiten
Hier ist ein Code, der auf den bereitgestellten Links und dem von Dommer geposteten Eariler basiert. Es wurde leicht gegen Ergebnisse unter
http://www.merlyn.demon.co.uk/js-date6.htm#YWDgetestet . Bitte gründlich testen, keine Garantie gegeben.2017 bearbeiten
Es gab ein Problem mit Daten während des Zeitraums, in dem die Sommerzeit beobachtet wurde, und Jahren, in denen der 1. Januar Freitag war. Mit allen UTC-Methoden behoben. Im Folgenden werden identische Ergebnisse für Moment.js zurückgegeben.
Stunden werden beim Erstellen des "UTC" -Datums auf Null gesetzt.
Minimierte Prototypversion (gibt nur die Wochennummer zurück):
Testabschnitt
In diesem Abschnitt können Sie ein beliebiges Datum im Format JJJJ-MM-TT eingeben und überprüfen, ob dieser Code dieselbe Wochennummer wie die ISO-Wochennummer von Moment.j enthält (getestet über 50 Jahre von 2000 bis 2050).
quelle
d.setMilliseconds(0)
- es wurden immer wieder unterschiedliche Wochennummern für dasselbe Datum angezeigt, je nachdem, ob ich ein neues Datum () oder ein neues Datum ("04.01.2016") verwendet habe. Nur ein Kopf hoch für andere, die das Gleiche erleben könnten.Sie können die momentjs-Bibliothek auch verwenden:
moment().format('W')
quelle
moment().week()
Wie oben gesagt, aber ohne Klasse:
quelle
(now.getTime() - onejan.getTime())
, um Build-Probleme zu vermeiden.Entsprechend http://javascript.about.com/library/blweekyear.htm
quelle
Die
Date.format()
Bibliothek von Jacob Wright implementiert die Datumsformatierung im Stil der PHP-date()
Funktion und unterstützt die Wochennummer ISO-8601:Es mag für nur eine Woche etwas übertrieben sein, aber es unterstützt die Formatierung im PHP-Stil und ist sehr praktisch, wenn Sie viel davon tun.
quelle
Der folgende Code ist zeitzonenunabhängig (UTC-Daten verwendet) und funktioniert gemäß https://en.wikipedia.org/wiki/ISO_8601
quelle
Ich fand die SimpleDateFormat- Klasse von Java SE nützlich, die in der Oracle-Spezifikation beschrieben ist: http://goo.gl/7MbCh5 . In meinem Fall in Google Apps Script hat es folgendermaßen funktioniert:
In einem Tabellenkalkulationsmakro können Sie beispielsweise die tatsächliche Zeitzone der Datei abrufen:
quelle
Dadurch wird Date.prototype um die Methode "getWeek" erweitert, die die Anzahl der Wochen ab Jahresbeginn zurückgibt. Das Argument definiert, welcher Wochentag den ersten berücksichtigt. Wenn kein Argument vorliegt, wird der erste Tag als Sonntag angenommen.
quelle
new Date(Date.UTC(2018,11, 31)).getWeek(1)+1
(Montag ist der 1. Wochentag in Deutschland).Holen Sie sich die Wochennummer eines bestimmten Datums
Beispiel
quelle
I need the week to begin on a Sunday
; Ich denke, die einzige notwendige Änderung ist in Funktion Wochentag ().getDay()+1
zu ändern.getDay()
Der folgende Code berechnet die korrekte ISO 8601-Wochennummer. Es entspricht den
date("W")
PHPs für jede Woche zwischen dem 1.1.1970 und dem 1.1.2100.Quelle: Taco van den Broek
Wenn Sie keine Prototypen erweitern möchten, finden Sie hier eine Funktion:
Beispielnutzung:
quelle
+6 ) % 7
Teil macht. Danke von einem Peeling!getDay()
beginnt an einem Sonntag. Wenn Sie also möchten, dass es am Sonntag beginnt, können Sie die Korrektur entfernen:var nDay = date.getDay();
Wenn Sie sich bereits in einem Angular-Projekt befinden, können Sie es verwenden
$filter('date')
.Beispielsweise:
quelle
Das Code-Snippet, das für mich ziemlich gut funktioniert, ist das folgende:
Hinweis:
d
ist mein Datum, für das ich die aktuelle Wochennummer haben möchte.Das
+
konvertiert die Daten in Zahlen (arbeitet mit TypeScript).quelle
Hier ist meine Implementierung zur Berechnung der Wochennummer in JavaScript. korrigiert auch für Sommer- und Winterzeitversätze. Ich habe die Definition der Woche aus diesem Artikel verwendet: ISO 8601
Die Wochen sind von Montag bis Sonntag und der 4. Januar ist immer in der ersten Woche des Jahres.
Zum Testen habe ich die folgenden JavaScript-Tests in Qunit verwendet
quelle
Diese Woche Nummer Sache war ein echter Schmerz in der a **. Die meisten Skripte im Internet haben bei mir nicht funktioniert. Sie arbeiteten die meiste Zeit, aber alle brachen irgendwann zusammen, besonders als sich das Jahr änderte und die letzte Woche des Jahres plötzlich die erste Woche des nächsten Jahres war usw. Sogar Angulars Datumsfilter zeigte falsche Daten (es war die erste Woche des nächsten Jahres, gab Angular an Woche 53).
Hinweis: Beispiele sind für die Arbeit mit europäischen Wochen konzipiert (Mo zuerst)!
getWeek ()
setDay ()
getDayIndex ()
Ich habe dies getestet und es scheint sehr gut zu funktionieren, aber wenn Sie einen Fehler darin bemerken, lassen Sie es mich bitte wissen.
quelle
Ich habe viel versucht, den kürzesten Code zu erhalten, um die ISO-konforme Wochennummer zu erhalten.
Die Variable
date
ist erforderlich, um eine Änderung des Originals zu vermeidenthis
. Ich habe die Rückgabewerte von verwendetsetDate()
undsetMonth()
zum Verzichten verwendetgetTime()
, um die Codelänge zu sparen, und ich habe eine Expontialzahl für Millisekunden eines Tages anstelle einer Multiplikation einzelner Elemente oder einer Zahl mit fünf Nullen verwendet.this
ist Datum oder Anzahl der Millisekunden, Rückgabewert istString
zB "49/2017".quelle
Mit Luxon ( https://github.com/moment/luxon ):
quelle
Eine weitere bibliotheksbasierte Option: Verwenden Sie
d3-time-format
:quelle
Kürzeste Problemumgehung für Angular2 + DatePipe, angepasst an ISO-8601:
quelle
quelle