Erhalten Woche Des Jahres
Delphi Xe, Win 7, System-Zeitzone UTC+4:0, Der erste Tag der Woche im system - Montag, Zeit wird synchronisiert mit time.windows.com
In einer palette von standard-Komponenten für Delphi Win32-es ist MonthCalendar-Komponente, bei der es Eigentum WeekNubers=true (Anzeige der Anzahl von Wochen), Zeitpunkt=jetzt, der erste Tag - Montag.
Zeigt auf 19 Anzahl (today) - die Zahl der Woche 43.
Bitte ich Sie die Nummer durch dateutils.WeekOfTheYear(jetzt) = gibt 42.
Quelle (0,5 Mb) http://www.sendspace.com/file/yuz6ko
Beurteilung durch eine erste code-Komponente MonthCalendar - es wie alle es ist wahr (auch wenn Sie nicht setzen Sie den ersten Tag der Woche, es nimmt den Wert von Systemparameter).
Und in der Untersuchung WeekOfTheYear es wird gesagt, dass alle von uns als auch standard-ISO angewendet, aber die Nummern Stimmen nicht überein 🙁
In irgendeiner Weise, die ich nicht verstehe, in einer Woche verschwindet - wenn man einen Kalender, sollte 43 und wenn zu berücksichtigen, dass 53 Wochen und die ersten Bedenken, die im letzten Jahr...
Übrigens WeekOfTheYear am 01.01.2011 zu gibt 52 aber wie soll return 1...
Warum die Unterschiede und wo ist es richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide Ergebnisse sind richtig, der Unterschied ist, weil die
DateUtils.WeekOfTheYear
- Funktion verwendet die ISO 8601 standard-definition von einer Woche.That is, a week is considered to start on a Monday and end on a Sunday.
Überprüfen Sie diese Erklärung über die Wochen Zahlen in der ISO-8601-format.
Auch der Embarcadero-online-Hilfe für die
DateUtils.WeekOfTheYear
Funktion sagtAlso durch welche die 01-01-2011 war Samstag dieser Woche gilt die Kalenderwoche 52 des Vorjahres.
... Und das erklärt auch, warum die Nummer der Woche zurückgeschickt und heute (19-10-2011) ist 42 statt 43.
MonthCalendar
Komponente ist in der windows-Monats-Kalender-Steuerelement, und berechnet die Nummer der Woche basierend in den Wert, die Sie an dieFirstDayofWeek
Eigenschaft.MonthCalendar
- Komponente zeigt in der gleichen Woche Anzahl, die zurückgegeben wird, indem dieWeekOfTheYear
Funktion?Erste von allen, ich konnte keinen Unterschied zwischen der Woche zahlen in der
TMonthCalendar
Komponente und diejenigen, die zurückgegebenDateUtils.WeekOfTheYear()
. (Montag ist der erste Tag der Woche, die auf meinem system.) Beide zeigen42
für die aktuelle Woche und52
(nicht53
) für die Woche vom2011-01-01
. (Es ist53
für2010-01-01
, so dass du vielleicht nur Durcheinander.)Nun, warum es
52
oder53
, aber nicht1
gut, es ist laut definition der ersten Woche ISO:Also Woche Nummer 1 in 2011 startet am
2011-01-03
, und das Vorherige gehört zu den bisherigen ISO-Jahr.Den
TMonthCalendar
behandeln kann, die Letzte Woche des Jahres als erste Woche des nächsten JahresWeekOfTheYear
Funktion tut es nicht, daher der Unterschied.Beispielsweise nach
TMonthCalendar
,1 Jan 2012
gehört beiden letzten Woche des Jahres 2011 und der ersten Woche des Jahres 2012;2 Jan 2012
ist der erste Tag der zweiten Woche 2012.Nach
WeekOfTheYear
Funktion1 Jan 2012
gehört zu der letzten Woche des Jahres 2011 nur;2 Jan 2012
ist der erste Tag der ersten Woche 2012.Montag ist der erste Tag der Woche für mich.