re PR libgcj/17002 (java.util.TimeZone.getDefault() is broken)
libjava/ PR libgcj/17002 PR classpath/28550 * java/util/VMTimeZone.java (getDefaultTimeZoneId): To read /etc/localtime, use ZoneInfo.readTZFile instead of VMTimeZone.readtzFile. Get better timezone name for /etc/localtime, either if it is a symlink or through /etc/sysconfig/clock. (readSysconfigClockFile): New static method. (readtzFile): Removed. * java/lang/System.java: Add gnu.java.util.zoneinfo.dir to comments. * posix.cc (_Jv_platform_initProperties): Set gnu.java.util.zoneinfo.dir. * sources.am (gnu_java_util_source_files): Add classpath/gnu/java/util/ZoneInfo.java. * Makefile.in: Regenerated. * java/util/VMTimeZone.h: Regenerated. * java/util/TimeZone.h: Regenerated. * gnu/java/util/ZoneInfo.h: Generated. libjava/classpath/ * java/util/Date.java (parse): Properly parse 09:01:02 as hours/minutes/seconds, not as hours/minutes/year. * java/util/SimpleTimeZone.java (SimpleTimeZone): Simplify {start,end}TimeMode constructor by calling shorter constructor, set {start,end}TimeMode fields after it returns. (setStartRule): Don't adjust startTime into WALL_TIME. Set startTimeMode to WALL_TIME. (endStartRule): Similarly. (getOffset): Handle properly millis + dstOffset overflowing into the next day. Adjust startTime resp. endTime based on startTimeMode resp. endTimeMode. * java/util/TimeZone.java (zoneinfo_dir, availableIDs, aliases0): New static fields. (timezones): Remove synchronized keyword. Set zoneinfo_dir. If non-null, set up aliases0 and don't put anything into timezones0. (defaultZone): Call getTimeZone instead of timezones().get. (getDefaultTimeZone): Fix parsing of EST5 or EST5EDT6. Use getTimeZoneInternal instead of timezones().get. (parseTime): Parse correctly hour:minute. (getTimeZoneInternal): New private method. (getTimeZone): Do the custom ID checking first, canonicalize ID for custom IDs as required by documentation. Call getTimeZoneInternal to handle the rest. (getAvailableIDs(int)): Add locking. Handle zoneinfo_dir != null. (getAvailableIDs(File,String,ArrayList)): New private method. (getAvailableIDs()): Add locking. Handle zoneinfo_dir != null. * gnu/java/util/ZoneInfo.java: New file. From-SVN: r122229
This commit is contained in:
parent
0c5c188f07
commit
b3502aa8d4
20 changed files with 1702 additions and 607 deletions
|
@ -754,6 +754,7 @@ public class Date
|
|||
}
|
||||
else if (firstch >= '0' && firstch <= '9')
|
||||
{
|
||||
int lastPunct = -1;
|
||||
while (tok != null && tok.length() > 0)
|
||||
{
|
||||
int punctOffset = tok.length();
|
||||
|
@ -791,6 +792,13 @@ public class Date
|
|||
else
|
||||
minute = num;
|
||||
}
|
||||
else if (lastPunct == ':' && hour >= 0 && (minute < 0 || second < 0))
|
||||
{
|
||||
if (minute < 0)
|
||||
minute = num;
|
||||
else
|
||||
second = num;
|
||||
}
|
||||
else if ((num >= 70
|
||||
&& (punct == ' ' || punct == ','
|
||||
|| punct == '/' || punct < 0))
|
||||
|
@ -828,6 +836,7 @@ public class Date
|
|||
tok = null;
|
||||
else
|
||||
tok = tok.substring(punctOffset + 1);
|
||||
lastPunct = punct;
|
||||
}
|
||||
}
|
||||
else if (firstch >= 'A' && firstch <= 'Z')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue