re PR libgcj/1358 (java.util.Date.toString() doesn't seem to behave properly.)
authorWarren Levy <warrenl@redhat.com>
Thu, 28 Dec 2000 05:55:56 +0000 (05:55 +0000)
committerWarren Levy <warrenl@gcc.gnu.org>
Thu, 28 Dec 2000 05:55:56 +0000 (05:55 +0000)
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

libjava/ChangeLog
libjava/java/lang/System.java
libjava/java/util/Calendar.java
libjava/java/util/GregorianCalendar.java
libjava/java/util/TimeZone.java
libjava/java/util/natGregorianCalendar.cc

index 84b0124deebd826e350c93bd62026d0374b30253..abe880dd8a8b076ca343a378ca6f87d5b63c7598 100644 (file)
@@ -1,3 +1,18 @@
+2000-12-27  Warren Levy  <warrenl@redhat.com>
+
+       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  <bryce@albatross.co.nz>
 
        * java/lang/natClass.cc (_Jv_IsAssignableFrom): Primitive TYPEs can
index 59787099d0703f759e4bb35067de417774959429..ab1ca99d90bd057168458705e302bb7c6d447201 100644 (file)
@@ -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.
 
index f31577a9dcfc8512943aba3e46c1bde1c5eb23fe..05c3f633eb1530283e0b2ee8b3a2ac05f33d1970 100644 (file)
@@ -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;
   }
 
   /**
index 3f6232a6994f9c97e35f8a056bbd89e8c37641a9..cc06c2919d2a0caa1c63edb4a7cea1eeed67d19d 100644 (file)
@@ -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);
   }
 
index 5132973ee53704c0f0a61a236b2916e3ed6d4f2c..0b9ea06bcea9b0d8482981bb3bc0d714d0530eab 100644 (file)
@@ -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();
   }
 
index b1d66d2a4b35e1694f56307f2249b8786259aed6..58ee46339541a0209de3378cdeb626a056ccb5b0 100644 (file)
@@ -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;
 }