Berechne das Datum von der Wochennummer
Weiss jemand eine einfache Möglichkeit um das Datum des ersten Tag der Woche (Montag hier in Europa). Ich weiß, das Jahr und die Nummer der Woche? Ich werde diese in C#.
Kommentar zu dem Problem
Stark verwandt, vielleicht duplizieren: stackoverflow.com/questions/659183/...
InformationsquelleAutor der Frage Bobby | 2009-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich Probleme mit der Lösung von @HenkHolterman auch mit dem fix von @RobinAndersson.
Lesen auf dem ISO 8601-standard löst das Problem schön. Verwenden Sie den ersten Donnerstag als Ziel und nicht Montag. Der code unten funktioniert für Woche 53 des Jahres 2009 als gut.
InformationsquelleAutor der Antwort Mikael Svenson
Hinweis
Den unten Antwort verwendet .NET-Kalender Regeln. Es verspricht nicht nach ISO8601-Konformität. Sehen Sie einige der anderen Antworten hier, wenn Sie das brauchen. Woche-Nummerierung ist eine Sauerei, immer versuchen, herauszufinden, welche Regeln Sie Folgen müssen, ersten.
Den code unten richtig stellt der start in Woche 1, 2009 um 29-12-2008. Die CalendarWeekRule sollte wohl ein parameter.
Beachten Sie, dass die kW sein sollte >= 1
InformationsquelleAutor der Antwort Henk Holterman
Mir gefällt die Lösung von Henk Holterman. Aber ein wenig mehr unabhängige Kultur, die Sie haben, um den ersten Tag der Woche für die aktuelle Kultur ( es ist nicht immer Montag ):
InformationsquelleAutor der Antwort Thomas
Der einfachste Weg ist wahrscheinlich zu finden, der erste Montag des Jahres, und fügen Sie die entsprechende Anzahl von Wochen. Hier einige Beispiel-code. Es geht eine Woche Nummer beginnend bei 1, by the way:
InformationsquelleAutor der Antwort Jon Skeet
Würde ich persönlich nutzen die Kultur-info abrufen, um den Tag der Woche und die Schleife unten auf der Kultur der erste Tag der Woche. Ich bin mir nicht sicher, ob ich erkläre es richtig, hier ein Beispiel:
InformationsquelleAutor der Antwort Alexander Kahoun
Gemäß ISO 8601:1988 , die verwendet wird, in Schweden die erste Woche des Jahres ist die erste Woche, die mindestens vier Tage im neuen Jahr.
Also, wenn Sie Ihre Woche beginnt am Montag der erste Donnerstag eines Jahres innerhalb der ersten Woche.
Sie können DateAdd oder DateDiff.
InformationsquelleAutor der Antwort idstam
mit Fließend DateTime http://fluentdatetime.codeplex.com/
InformationsquelleAutor der Antwort Simon
Den freien Zeit-Bibliothek für .NET umfasst die ISO 8601 entsprechen Klasse Woche:
InformationsquelleAutor der Antwort
Diese funktionierte für mich, es haben auch den Vorteil, zu erwarten, ein cultureinfo-als parameter zu testen, die Formel mit den verschiedenen Kulturen. Wenn leer, wird der aktuelle Kultur info... gültige Werte sind z.B.: "es", "en-us", "fr", ... ando so weiter.
Der trick ist, subtrahieren Sie die Nummer der Woche der erste Tag des Jahres, das kann 1 sein, um anzuzeigen, dass der erste Tag innerhalb der ersten Woche. Hoffe, das hilft.
InformationsquelleAutor der Antwort Paolo Marani
Hier ist eine Methode, die kompatibel ist mit der Woche zahlen, Google Analytics, und auch die gleiche Nummerierung Schema, das wir intern bei Intel, und dessen bin ich mir sicher, wird auch in vielen anderen Kontexten.
InformationsquelleAutor der Antwort Samer Adra
Vorausgesetzt der Woche-Nummer beginnt bei 1
Dies sollte Ihnen der erste Tag in einer bestimmten Woche. Ich bin noch nicht viel testen, aber sieht aus wie es funktioniert. Es ist die kleinere Lösung, als die meisten anderen die ich im Internet gefunden habe, so teilen wollte.
InformationsquelleAutor der Antwort Nija
Leicht geändert Mikael Svensson-code. Ich fand die Woche mit dem ersten Montag und die entsprechende änderung der Nummer der Woche.
InformationsquelleAutor der Antwort Vitalij Roscinski
Habe ich versucht einige codes oben, und einige haben kleine Fehler, wenn Sie versuchen, aus verschiedenen Jahren mit unterschiedlichen anfangs-Tagen der Woche, werden Sie Sie sehen, ich habe den code von Jon Skeet, zu beheben, und es funktioniert, sehr einfache code.
InformationsquelleAutor der Antwort GEORGE BAXTER
Woche 1 ist definiert als die Woche, die beginnt an einem Montag und enthält den ersten Donnerstag des Jahres.
InformationsquelleAutor der Antwort amaca
Zur Konvertierung in beide Richtungen, siehe hier: Wikipedia-Artikel zu ISO-Woche-Termine
InformationsquelleAutor der Antwort Robert L
Verbesserte ich ein wenig auf Thomas' - Lösung mit einem override:
Sonst der Termin wurde auf den vorhergehenden von einer Woche..
Danke Thomas, eine große Hilfe.
InformationsquelleAutor der Antwort pasx
Habe ich eine der Lösungen, aber es gab mir falsche Ergebnisse, weil es einfach zählt den Sonntag als ersten Tag der Woche.
Ich geändert:
:
und nun, es funktioniert wie ein Charme.
InformationsquelleAutor der Antwort user1564287
Die vorgeschlagene Lösung ist nicht abgeschlossen - es funktioniert nur für CalendarWeekRule.FirstFullWeek. Andere Arten von week-Regeln funktionieren nicht. Dies kann man mit diesem test-Fall:
InformationsquelleAutor der Antwort Colin Breame
Habe ich eine verfeinerte version der vorgeschlagenen Lösung ist eine einfachere und parametrises die firstDayOfWeek:
InformationsquelleAutor der Antwort Colin Breame
dies ist meine Lösung, wenn wir berechnen wollen, die ein Datum gegeben, Jahr, Woche und Tag der Woche.
InformationsquelleAutor der Antwort José Ignacio Becerra Becerra
Ich vereinfacht den code, Mikael Svensson, das ist richtige für viele Länder in Europa.
InformationsquelleAutor der Antwort Oskar Sjöberg
Habe ich geschrieben und getestet Sie den folgenden code und arbeitet völlig in Ordnung für mich. Bitte lassen Sie mich wissen, wenn jemand Gesicht, Probleme mit diesem, ich habe eine Frage, wie gut, um die best mögliche Antwort. Kann jemand es nützlich finden.
InformationsquelleAutor der Antwort Learner
Derzeit gibt es keine C# - Klasse, die richtig verarbeitet ISO 8601week zahlen. Obwohl Sie können, instanziieren Sie Kultur, suchen Sie für die nächste Sache und richtig, dass, ich denke, es ist besser zu tun, die komplette Berechnung selbst:
InformationsquelleAutor der Antwort realbart