Juliusz
Mikoda
Projektant,
programista
Temat: Ciekawostka - pytanie?
WitamMam 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?