Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 May 2006 13:17:40 +0200
From:      Heiko Weber <java@wecos.de>
To:        Achilleus Mantzios <achill@matrix.gatewaynet.com>
Cc:        freebsd-java@freebsd.org
Subject:   Re: Calendar Question - maybe bug ?
Message-ID:  <200605301317.40658.java@wecos.de>
In-Reply-To: <Pine.LNX.4.44.0605301303350.17568-100000@matrix.gatewaynet.com>
References:  <Pine.LNX.4.44.0605301303350.17568-100000@matrix.gatewaynet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Am Dienstag, 30. Mai 2006 12:10 schrieb Achilleus Mantzios:
> O Heiko Weber =DD=E3=F1=E1=F8=E5 =F3=F4=E9=F2 May 30, 2006 :
> > Am Dienstag, 30. Mai 2006 08:19 schrieb Panagiotis Astithas:
> > > Heiko Weber wrote:
> > > > Hi !
> > > >
> > > > I've a problem with GregorianCalendar, which returns different weeks
> > > > (in year) on FreeBSD 6.1, java version is
> > > >
> > > > # java -version
> > > > Java HotSpot(TM) Server VM (build 1.5.0-p2-heiko_03_jan_2006_23_51,
> > > > mixed mode)
> > > >
> > > > Test program (A.java):
> > > >
> > > > import java.util.Calendar;
> > > > import java.util.GregorianCalendar;
> > > >
> > > > public class A {
> > > > public static int weeksInYear(int year) {
> > > >                 Calendar cal =3D GregorianCalendar.getInstance();
> > > >
> > > >                 cal.set(year, 11, 31);
> > > >
> > > >                 return cal.get(Calendar.WEEK_OF_YEAR) =3D=3D 53 ? 5=
3 :
> > > > 52; }
> > > >
> > > >         public static void main(String args[]) {
> > > >                 for (int i =3D 1990; i <=3D 2006; i++)
> > > >                         System.out.println("Weeks in Year " + i + "=
 =3D
> > > > " + weeksInYear(i));
> > > >         }
> > > > }
> > > >
> > > > Output on a Linux or Windows JRE is:
> > > >
> > > > Weeks in Year 1990 =3D 52
> > > > Weeks in Year 1991 =3D 52
> > > > Weeks in Year 1992 =3D 53
> > > > Weeks in Year 1993 =3D 52
> > > > Weeks in Year 1994 =3D 52
> > > > Weeks in Year 1995 =3D 52
> > > > Weeks in Year 1996 =3D 52
> > > > Weeks in Year 1997 =3D 52
> > > > Weeks in Year 1998 =3D 53
> > > > Weeks in Year 1999 =3D 52
> > > > Weeks in Year 2000 =3D 52
> > > > Weeks in Year 2001 =3D 52
> > > > Weeks in Year 2002 =3D 52
> > > > Weeks in Year 2003 =3D 52
> > > > Weeks in Year 2004 =3D 53
> > > > Weeks in Year 2005 =3D 52
> > > > Weeks in Year 2006 =3D 52
> > > >
> > > > Output on FreeBSD is:
> > > >
> > > > Weeks in Year 1990 =3D 52
> > > > Weeks in Year 1991 =3D 52
> > > > Weeks in Year 1992 =3D 52
> > > > Weeks in Year 1993 =3D 52
> > > > Weeks in Year 1994 =3D 53
> > > > Weeks in Year 1995 =3D 52
> > > > Weeks in Year 1996 =3D 52
> > > > Weeks in Year 1997 =3D 52
> > > > Weeks in Year 1998 =3D 52
> > > > Weeks in Year 1999 =3D 52
> > > > Weeks in Year 2000 =3D 52
> > > > Weeks in Year 2001 =3D 52
> > > > Weeks in Year 2002 =3D 52
> > > > Weeks in Year 2003 =3D 52
> > > > Weeks in Year 2004 =3D 52
> > > > Weeks in Year 2005 =3D 53
> > > > Weeks in Year 2006 =3D 52
> > > >
> > > > Is this my fault or would it help to update the FreeBSD JRE ? Or is
> > > > the java-Calendar-System build up on some local (changeable) settin=
gs
> > > > ?
> > > >
> > > > Thanks for any help or hint.
> > >
> > > I can't replicate this here on either diablo-jdk15 or jdk15 patchset 2
> > > (as yours). Is your systems time/timezone/etc. correct?
> >
> > Hm, /etc/localtime has been installed last year in september - from
> > installation of FreeBSD 6.0. If I remember correct I used sysinstall and
> > answered "cmos time =3D=3D local time".
> >
> > # date
> > Tue May 30 09:48:36 CEST 2006
> >
> > Is this ok for germany ?
>
> I think yes, it means Central European Time (CET) with saylight savings
> (S).
>
> Applying
> --- A.java.old  Tue May 30 12:57:28 2006
> +++ A.java      Tue May 30 12:57:37 2006
> @@ -11,6 +11,7 @@
>           }
>
>           public static void main(String args[]) {
> +                java.util.TimeZone.setDefault(null);
>                   for (int i =3D 1990; i <=3D 2006; i++)
>                           System.out.println("Weeks in Year " + i + " =3D=
 "
> + weeksInYear(i));
>           }
>
> Should give you a hint of whether the problem is TZ related.
>
> P.S.
> Also with 1.4.2 I get the first result set.

Hi Achilleus,

the above "patch" makes no difference on my system.

I compared /etc/localtime with the files in /usr/share/zoneinfo, it=20
is /usr/shared/zoneinfo/Europe/Berlin.

Heiko



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200605301317.40658.java>