PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Errechnen der Wochenzahl?



Lin728
25-07-2003, 11:02
Ich muss gerade nen ewigen Kalender machen, funktioniert soweit schon ganz gut, nur hab ich überhaupt keine Idee nach welchen Regeln die Wochenzahl ermittelt wird.

Einmal reicht die 52. Woche ins neue Jahr, dann die 53.? Gibts da irgendwo regeln, die das einfach präzisieren?

Mfg

bischi
25-07-2003, 11:29
Weiss nicht, kommt halt darauf an, mit welchem Wochentag das Jahr beginnt.

Vermutlich musst dus etwa so machen:

Schauen, ob es ein Schaltjahr ist.
Anzahl Tage minus wieviele Tage in der ersten Woche pro Jahr.
Verbleibende Anzahl Tage durch 7.
Erhaltene Zahl auf ganze Zahl abrunden.
Schon weisst du, wieviele Wochen das Jahr hat.

MfG Bischi

PS: Ist jetzt improvisiert, hab keine Ahnung ob es wirklich stimmt!

BLUESCREEN3D
25-07-2003, 14:47
Original geschrieben von ceisserer
Weiß wer, wann das letzte Schaltjahr war?

<keine garantie *gg*>um zu berechnen, ob ein jahr ein schaltjahr ist gibt es eine einfache regel - ich gluabe wenn es durch 4 teilbar ist, aber nicht durch 100 dann ist es ein schaltjahr... oderso...</keine garantie *gg*>

Lin728
25-07-2003, 15:11
O.K., das mit den Wochen hab ich herausbekommen:



Die Kalenderwochen werden für Jahre ab 1976 berechnet, da mit Geltung vom 1. Januar 1976 der Wochenbeginn auf Montag festgelegt wurde. Die erste Woche ist definiert als die Woche, in der mindestens 4 der ersten 7 Januartage fallen (also die Woche, in der der 4. Januar liegt). Beides wurde damals festgelegt in der DIN 1355 (1974). Inhaltlich gleich regelt das die Internationale Norm ISO 8601 (1988), die von der Europäischen Union als EN 28601 (1992) übernommen und in Deutschland als DIN EN 28601 (1993) umgesetzt wurde.
Demzufolge haben die meisten Jahre 52 Wochen. Der jährliche überzählige Tag sowie die Schaltjahre führen aber dazu, daß es alle 5 bis 6 Jahre ein Jahr mit 53 Wochen gibt, so die Jahre 1992, 1998, 2004, 2009, 2015.
Da es keine "halben" Wochen gibt, gehören manche Tage ihrer Kalenderwoche nach zu einem anderen Jahr als es der üblichen Datumsangabe entspricht (z.B. gehört der 2. Jan. 2000 noch zur 53. Kalenderwoche 1999).

Und das mit dem Schaltjahr ist einfach: Ich seh mir einfach den Modulo (%) wert eines Schaltjahres durch 4 an, jedes Schaltjahr hat dann diesen %4-Wert...

Mfg

pitu
25-07-2003, 15:34
Ich hab das als fuer php folgendermassen geloest:



function getWeek($date){
$week = `date -d $date +%V`;
return ($week);
}


Das ist natuerlich etwas abgekuerzt, da ich fuer diese Aufgabe es nicht genauer brauchte.

Die Kalenderwoche wird nach Din 1355 bestimmt.
http://www.engelschall.com/~sb/download/Date-Calc/DIN1355/

Dazu muss man wissen, das die erste Woche die ist, die mindestens 4 Kalendertage enthaelt, beginn der woche ist Montag. Dieses Jahr hat z.B. mit einem Mittwoch angefangen, ergo sind 5 Tage der Woche in diesem Jahr.

Also musst du bestimmen, ab wann die erste Woche anfaengt.

Wenn die Woche erst im Jahr anfaengt, musst du die vorhergehenden Tage vom Jahr abziehen.

So, wenn die erste Woche des naechsten Jahres in diesem Jahr anfaengt, dann musst du die letzten Tage auch abziehen.

Dann teilst du das durch 7 und bekommst entweder 52 oder irgendetwas 52<x<=53.

Entsprechend hat das Jahr dann entweder 52 oder 53 Kalenderwochen.

http://www.salesianer.de/util/kalfaq.html#B3
http://home.nwn.de/hgm/kalender/kal-64.htm

gruss,
pitu

bischi
25-07-2003, 16:32
Original geschrieben von ceisserer
Und das mit dem Schaltjahr ist einfach: Ich seh mir einfach den Modulo (%) wert eines Schaltjahres durch 4 an, jedes Schaltjahr hat dann diesen %4-Wert...

Mfg Clemens

Nicht ganz; Brockhaus sagt dazu folgendes:


Schaltjahr,
Jahr im Kalender, das im Unterschied zum Gemeinjahr von 365 Tagen einen zusätzlichen Tag (Schalttag) oder Monat (Schaltmonat) enthält, um den Unterschied zwischen reinem Kalenderjahr und (meist) Sonnenjahr auszugleichen; im gregorianischen Kalender jedes vierte Jahr (Schalttag: 29.2.), bei folgenden Regeln: Das betreffende Jahr ist ein Schaltjahr, wenn die Jahreszahl ohne Rest durch 4 teilbar ist; es ist kein Schaltjahr, wenn die Jahreszahl ohne Rest durch 4 und 25 teilbar ist (mit Ausnahme der durch 400 teilbaren Jahre).
© 2002 Bibliographisches Institut & F. A. Brockhaus AG

MfG Bischi

peschmae
25-07-2003, 18:41
du könntest auch versuchen in Java einem Calendar die Wochenzahl auf 53 zu setzen und schauen was er macht oder so :)

vielleicht wirft er ja ne exception :confused:

MfG Peschmä

bischi
25-07-2003, 22:36
Und die wäre:

NoSuchYearException, InvalidDataYouWillBeTerminatedException, GreatNewCalendarException?

MfG Bischi :confused:

anda_skoa
25-07-2003, 22:51
Original geschrieben von peschmae
du könntest auch versuchen in Java einem Calendar die Wochenzahl auf 53 zu setzen und schauen was er macht oder so :)


Vielleicht versteh ich die Aufgabenstellung nicht, aber wenn Java als Implementations Framework dient, stellt doch der java.util.Calendar bzw seine Implementationen bereits die Lösung, oder?

Ciao,
_

peschmae
26-07-2003, 09:13
Original geschrieben von bischi
Und die wäre:

NoSuchYearException, InvalidDataYouWillBeTerminatedException, GreatNewCalendarException?


egal. Die Klartextversion davon ist: "Wieso blöd herumrechnen, wenn die Java Klassenbibliothek eh schon ne nette Methode dafür anbietet?"

MfG Peschmä

peschmae
26-07-2003, 09:14
Original geschrieben von anda_skoa
Vielleicht versteh ich die Aufgabenstellung nicht, aber wenn Java als Implementations Framework dient, stellt doch der java.util.Calendar bzw seine Implementationen bereits die Lösung, oder?


hat noch was für sich :)

Ich bin halt ein fauler Mensch :D

MfG Peschmä

bischi
26-07-2003, 10:42
Ich glaube, es ging mehr darum, das ceisserer etwas kreatives machen wollte und dabei gleichzeitig noch lernen wollte, wie ein Kalender so richtig funktioniert (ich hab den Durchblick immer noch nicht 100%).

Und jetzt kommt ihr und vermiest ihm die ganze Freude an der neu gefundenen Aufgabe!!! ;)

MfG Bischi

anda_skoa
26-07-2003, 11:40
Original geschrieben von bischi
Ich glaube, es ging mehr darum, das ceisserer etwas kreatives machen wollte und dabei gleichzeitig noch lernen wollte, wie ein Kalender so richtig funktioniert (ich hab den Durchblick immer noch nicht 100%).


Ah, ok.
Dann war aber die Forumlierung nicht so günstig gewählt weil da stand "...Ich muss.."

Ciao,
_

peschmae
26-07-2003, 16:11
naja,

bischi "glaubt" auch nur :D

MfG Peschmä