From b128cc6dae9af52de4df33ce72b2f5a484be9251 Mon Sep 17 00:00:00 2001 From: aph Date: Wed, 14 Feb 2007 19:31:58 +0000 Subject: 2007-02-14 Jakub Jelinek Andrew Haley * java/util/TimeZone.java (getDateParams): Negate dayOfWeek. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121955 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/classpath/ChangeLog | 5 +++++ libjava/classpath/java/util/TimeZone.java | 24 ++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 6dd05b94c1d..85fa74c0b8c 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,8 @@ +2007-02-14 Jakub Jelinek + Andrew Haley + + * java/util/TimeZone.java (getDateParams): Negate dayOfWeek. + 2007-02-09 Tom Tromey PR libgcj/30647: diff --git a/libjava/classpath/java/util/TimeZone.java b/libjava/classpath/java/util/TimeZone.java index f349b031e95..a253561b046 100644 --- a/libjava/classpath/java/util/TimeZone.java +++ b/libjava/classpath/java/util/TimeZone.java @@ -1090,18 +1090,30 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable int day; // Month, week of month, day of week + + // "Mm.w.d". d is between 0 (Sunday) and 6. Week w is + // between 1 and 5; Week 1 is the first week in which day d + // occurs and Week 5 specifies the last d day in the month. + // Month m is between 1 and 12. + month = Integer.parseInt(date.substring(1, date.indexOf('.'))); int week = Integer.parseInt(date.substring(date.indexOf('.') + 1, date.lastIndexOf('.'))); int dayOfWeek = Integer.parseInt(date.substring(date.lastIndexOf('.') + 1)); - if (week == 5) - day = -1; // last day of month is -1 in java, 5 in TZ - else - // first day of week starting on or after. - day = (week - 1) * 7 + 1; - dayOfWeek++; // Java day of week is one-based, Sunday is first day. + + if (week == 5) + day = -1; // last day of month is -1 in java, 5 in TZ + else + { + // First day of week starting on or after. For example, + // to specify the second Sunday of April, set month to + // APRIL, day-of-month to 8, and day-of-week to -SUNDAY. + day = (week - 1) * 7 + 1; + dayOfWeek = -dayOfWeek; + } + month--; // Java month is zero-based. return new int[] { month, day, dayOfWeek }; } -- cgit v1.2.1