From: Warren Levy Date: Thu, 28 Dec 2000 05:55:56 +0000 (+0000) Subject: re PR libgcj/1358 (java.util.Date.toString() doesn't seem to behave properly.) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ed55bdc47f78302e9f7271300cef11be655bccc0;p=gcc.git re PR libgcj/1358 (java.util.Date.toString() doesn't seem to behave properly.) Fix for PR libgcj/1358: * java/lang/System.java: Update Copyright date properly. * java/util/Calendar.java: Fix typo in comment. (set): Set 24-hour clock hour instead of 12-hour clock hour. * java/util/GregorianCalendar.java (GregorianCalendar): Properly initialize times. Spec says to set H:M:S values to zero only if a date is given. * java/util/TimeZone.java (getDefaultDisplayName): Casts to char needed for evaluating numbers '0' to '9' in printouts of GMT offsets. * java/util/natGregorianCalendar.cc (computeTime): Properly handle timezones and GMT offsets, being careful to account for units of milliseconds vs. seconds. From-SVN: r38508 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 84b0124deeb..abe880dd8a8 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,18 @@ +2000-12-27 Warren Levy + + Fix for PR libgcj/1358: + * java/lang/System.java: Update Copyright date properly. + * java/util/Calendar.java: Fix typo in comment. + (set): Set 24-hour clock hour instead of 12-hour clock hour. + * java/util/GregorianCalendar.java (GregorianCalendar): Properly + initialize times. Spec says to set H:M:S values to zero only if + a date is given. + * java/util/TimeZone.java (getDefaultDisplayName): Casts to char + needed for evaluating numbers '0' to '9' in printouts of GMT offsets. + * java/util/natGregorianCalendar.cc (computeTime): Properly handle + timezones and GMT offsets, being careful to account for units of + milliseconds vs. seconds. + 2000-12-28 Bryce McKinlay * java/lang/natClass.cc (_Jv_IsAssignableFrom): Primitive TYPEs can diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java index 59787099d07..ab1ca99d90b 100644 --- a/libjava/java/lang/System.java +++ b/libjava/java/lang/System.java @@ -1,6 +1,6 @@ // System.java - System-specific info. -/* Copyright (C) 1998, 1999 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation This file is part of libgcj. diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java index f31577a9dcf..05c3f633eb1 100644 --- a/libjava/java/util/Calendar.java +++ b/libjava/java/util/Calendar.java @@ -257,7 +257,7 @@ public abstract class Calendar implements Serializable, Cloneable */ public static final int DECEMBER = 11; /** - * Constant representing Undecimber. This is an artifical name useful + * Constant representing Undecimber. This is an artificial name useful * for lunar calendars. */ public static final int UNDECIMBER = 12; @@ -581,9 +581,9 @@ public abstract class Calendar implements Serializable, Cloneable public final void set(int year, int month, int date, int hour, int minute) { set(year, month, date); - fields[HOUR] = hour; + fields[HOUR_OF_DAY] = hour; fields[MINUTE] = minute; - isSet[HOUR] = isSet[MINUTE] = true; + isSet[HOUR_OF_DAY] = isSet[MINUTE] = true; } /** diff --git a/libjava/java/util/GregorianCalendar.java b/libjava/java/util/GregorianCalendar.java index 3f6232a6994..cc06c2919d2 100644 --- a/libjava/java/util/GregorianCalendar.java +++ b/libjava/java/util/GregorianCalendar.java @@ -115,23 +115,20 @@ public class GregorianCalendar extends Calendar { public GregorianCalendar (int year, int month, int date) { this(); - setDefaultTime (); - set (year, month, date); + set (year, month, date, 0, 0, 0); } public GregorianCalendar (int year, int month, int date, int hour, int minute) { this(); - setDefaultTime (); - set (year, month, date, hour, minute); + set (year, month, date, hour, minute, 0); } public GregorianCalendar (int year, int month, int date, int hour, int minute, int second) { this(); - setDefaultTime (); set (year, month, date, hour, minute, second); } diff --git a/libjava/java/util/TimeZone.java b/libjava/java/util/TimeZone.java index 5132973ee53..0b9ea06bcea 100644 --- a/libjava/java/util/TimeZone.java +++ b/libjava/java/util/TimeZone.java @@ -896,8 +896,9 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable int hours = offset / 60; int minutes = offset % 60; - sb.append('0' + hours / 10).append('0' + hours % 10).append(':'); - sb.append('0' + minutes / 10).append('0' + minutes % 10); + sb.append((char) ('0' + hours / 10)).append((char) ('0' + hours % 10)); + sb.append(':'); + sb.append((char) ('0' + minutes / 10)).append((char) ('0' + minutes % 10)); return sb.toString(); } diff --git a/libjava/java/util/natGregorianCalendar.cc b/libjava/java/util/natGregorianCalendar.cc index b1d66d2a4b3..58ee4633954 100644 --- a/libjava/java/util/natGregorianCalendar.cc +++ b/libjava/java/util/natGregorianCalendar.cc @@ -39,16 +39,17 @@ java::util::GregorianCalendar::computeTime () // Adjust for local timezone (introduced by mktime) and our // timezone. #if defined (STRUCT_TM_HAS_GMTOFF) - t += tim.tm_gmtoff; + t -= tim.tm_gmtoff; #elif defined (HAVE_TIMEZONE) - t -= timezone; + t += timezone; #endif - java::util::TimeZone *zone = getTimeZone (); - t += zone->getRawOffset(); - // Adjust for milliseconds. time = t * (jlong) 1000 + elements(fields)[MILLISECOND]; + // Now adjust for the real timezone, i.e. our timezone, which is in millis. + java::util::TimeZone *zone = getTimeZone (); + time += zone->getRawOffset(); + isTimeSet = true; }