Juliusz Mikoda

Juliusz Mikoda Projektant,
programista

Temat: Ciekawostka - pytanie?

Witam
Mam małe pytanie, może ciekawostkę.
Wspieram jeden system. Opiera się on na czasie określanym jako tygodnie w danym roku.
Ze względu na tą specyfikę systemu muszę wyliczyć ten tydzień oraz przesunąć się do przodu lub do tyłu. Poniżej kod przesunięcia o weekoffset tygodni do przodu lub do tyłu.

cl = new GregorianCalendar();
cl.set(GregorianCalendar.YEAR, weekroll / 100);
cl.set(GregorianCalendar.WEEK_OF_YEAR, weekroll % 100);
cl.add(GregorianCalendar.WEEK_OF_YEAR,weekoffset);
weekroll = (cl.get(GregorianCalendar.YEAR)*100) + cl.get(GregorianCalendar.WEEK_OF_YEAR);

Pierwszym dniem tygodnia jest oczywiście poniedziałek.
I tu pewien problem: dodając do dnia weekroll=200702 weekroll=52 tygodnie, powinniśmy uzyskać weekroll=200801. Tak jest jeśli dniem, w którym wykonujemy obliczenia nie jest poniedziałek. Jeśli rozpoczynamy od poniedziałku (inicjacja klasy GregorianCalendar) wynikiem jest wartość weekroll=200701.
Czy jest możliwe "estetyczne" rozwiązanie tego problemu?
Łukasz Fusiara

Łukasz Fusiara Banking Professional
Services Manager,
Wincor-Nixdorf
Poland

Temat: Ciekawostka - pytanie?

rezultat jest chyba poprawny bo jeżeli za inicjalizujemy klasę GregorianCalendar dniem 2007.01.01 - poniedziałek to po dodaniu 52 tygodni dostajemy 2007.12.31 31 jest poniedziałkiem i 'znajduje' się w pierwszym tygodniu 2008 roku czyli weekroll 200701

można użyć funkcji setMinimalDaysInFirstWeek(7) tylko wtedy z oklei 01.2008 będzie 200853 :)

najlepiej będzie chyba pobierać rok z ostatniego dnia w danym tygodniu

Następna dyskusja:

Praca w Warszawie pytanie




Wyślij zaproszenie do