History log of /libcore/luni/src/main/java/java/util/TimeZone.java
Revision Date Author Comments
d43b9ef11a1095967a3396b246639b563e1a4128 12-Sep-2012 Kenny Root <kroot@google.com> Add consistent reasons for NullPointerException

Semi-automated replacement of empty and non-conforming
NullPointerException reason messages.

(cherry-pick of 86acc043d3334651ee26c65467d78d6cefedd397.)

Change-Id: I6d893979f5c20a50e841e32af9fd7b2d8bc9d54d
86acc043d3334651ee26c65467d78d6cefedd397 12-Sep-2012 Kenny Root <kroot@google.com> Add consistent reasons for NullPointerException

Semi-automated replacement of empty and non-conforming
NullPointerException reason messages.

Change-Id: Iedeb4b21949e973c4042ce5982dda315f2e785e1
78c3de051d68b703af480778c100ca335690b250 30-Jul-2012 Elliott Hughes <enh@google.com> Fix TimeZone's handling of Australia/Lord_Howe.

Australia/Lord_Howe has a half hour difference between standard and daylight
time, rather than the usual hour. Our ZoneInfo implementation ignored this.
Fix that oversight, make SimpleDateFormat actually use this information, and
prevent TimeZone.getTimeZone("GMT") and TimeZone.getTimeZone("UTC") from
being quite as expensive as they accidentally were.

Longer term I think we should probably remove all uses of getDSTSavings from
libcore in favor of TimeZone.getOffset, but this is probably a useful step
forwards anyway. It fixes Australia/Lord_Howe in the meantime and it means
that anyone else who's using getDSTSavings won't be bitten (even if they too
really ought to be using TimeZone.getOffset).

Bug: 4723412
Bug: http://code.google.com/p/android/issues/detail?id=24684
Change-Id: I5d50afecbe1453157e9c8f0b88305a258a3ba2e0
91348f798cddae22b59ee1a17bd24315c0897f6f 23-Jun-2012 Elliott Hughes <enh@google.com> Be more careful when parsing custom zone ids.

The old code was allowing invalid ids.

Bug: 6556561
Change-Id: I691d33fa133527a76bbffa4e3b56a023c389ca8f
6fb123c8681a795c65cbd67ffcc0ef641c473288 10-Jan-2012 Elliott Hughes <enh@google.com> Make it clearer that TimeZone.getTimeZone(null) throws NPE on purpose.

Bug: http://code.google.com/p/android/issues/detail?id=24036
Change-Id: I3464dc5094274931d67e3ca4a5bc553fa1a6dc96
d8d3329347af700beed67172c77046b5c2ecece2 15-Jun-2011 Jesse Wilson <jessewilson@google.com> Kill another use of TimeZone.useDaylightTime().

I wrote another test to prove the use was incorrect.

Change-Id: I86c5e53c735e7948b96c0d2a87abe21eb9aed876
http://b/2435103
6d82ce5d35a5e84aedf08528fd98b849f3f565a6 15-Feb-2011 Elliott Hughes <enh@google.com> Move ZoneInfo and ZoneInfoDB into libcore.util.

Change-Id: I91385512ec27aa2aebdc163ae204e542efa58f21
566bbb1d5a0ffadfc07fa58176587d4bd0d0be13 12-Feb-2011 Elliott Hughes <enh@google.com> Various time zone strings improvements.

* Added a cache -- really a memo table -- to libcore.icu.TimeZones. I've also
made the intern table global across all locales, for the common case where one
language has many corresponding country codes (and thus locales) for which the
strings are all the same. (I.e. this gives us deduplication across locales
where before we only had it within locales.) We also eagerly populate the cache
with both the default locale *and* en_US in the zygote, which should provide
better behavior for everyone whose default locale isn't en_US.

* Switched from linear search to binary search when pulling a row out of the
zone strings table. We could hash these, but I currently have no reason to
think we'd gain much speed for the space.

* Removed the special-case hack I had to ask ICU for a single string. The new
code largely removes the need for this, though one can imagine a theoretical
app that will behave worse under the new regime, all plausible ones will
benefit.

* Switch ICU over to using an mmap(2)ed copy of its .dat file and tell it never
to look for stuff on the file system. This doesn't actually work in any current
version of ICU, though it is slightly faster by virtue of no longer looking for
individual .res files (it still keeps looking for the same .dat file over and
over). I'll work on fixing ICU later. This change takes us from about
1.1s/locale to 0.8s/locale. My current ICU hack takes that down to 0.3s/locale,
which is still obscene, but it's another step in the right direction.

* Fixed the "unambiguous abbrevations" logic in TimeZones.cpp so that all users
of (say) CET to mean "Central European Time" get it, not just first. We really
just wanted to avoid the situation where there's a "Central Excellent Time" or
whatever, whose CET would *conflict* with the first one we learned about.
Multiple references to the same time zone are not conflicts.

* Moved clone2dStringArray to the only place it's really needed.

* Slightly better documentation for Comparator.

* More tests, including the one for CET formatting that I should have added
when I fixed CET parsing, which would have shown me the error of my old ways.

Bug: 3443476
Change-Id: If1d50e6273fc98a38139f14445265ce0be5e09dd
6c0aa9e00fdbcc2765d3c498c45e078457944468 14-Sep-2010 Elliott Hughes <enh@google.com> Fix the TimeZone.getTimeZone documentation and a test.

Bug: 2996225
Change-Id: I9242b8a8e343d2b1995b5f1d0cb715d2fa3080f6
705462a2b003b2eeed90bf3cebe0871e02554cbd 12-Aug-2010 Elliott Hughes <enh@google.com> Minor documentation improvements.

Fix unqualified uses of SimpleDateFormat in TimeZone.java, explain how to use
getPercentageInstance (http://code.google.com/p/android/issues/detail?id=10333),
add an explicit test to make sure no-one accidentally "fixes" that
odd-but-correct behavior, and remove an example from the DecimalFormat
documentation that doesn't really clarify anything.

Bug: http://code.google.com/p/android/issues/detail?id=10333
Change-Id: I52f22d817c7c6c32ad38fb6953fbe909a76f8943
3ab13ebe9d67b0b210865853902b854711ef45b0 11-Aug-2010 Elliott Hughes <enh@google.com> Improve the performance of TimeZone.getTimeZone.

Rewrite the code that reads time zone data so that rather than opening,
reading, and closing the file each time, we just keep the file mapped.

This patch actually removes functionality: we no longer support reading
individual Unix time zone data files.

Also stop cloning guaranteed-new instances returned by ZoneInfoDB.

Before:

benchmark us logarithmic runtime
TimeZone_getDefault 9.85 =
TimeZone_getTimeZoneUTC 211.40 =====================
TimeZone_getTimeZone_America_Caracas 437.87 ==========================
TimeZone_getTimeZone_America_Santiago 783.29 ==============================
TimeZone_getTimeZone_GMT_plus_10 181.80 ====================
TimeZone_getTimeZone_default 194.78 ====================

After:

benchmark us logarithmic runtime
TimeZone_getDefault 10.8 =
TimeZone_getTimeZoneUTC 70.9 =============
TimeZone_getTimeZone_America_Caracas 118.9 =================
TimeZone_getTimeZone_America_Santiago 797.5 ==============================
TimeZone_getTimeZone_GMT_plus_10 57.8 ============
TimeZone_getTimeZone_default 72.2 =============

(Note that these have very different scales.)

Bug: 2870945
Change-Id: Iae5aa86153006d4de8e7278d30bcaeef6a9ccab7
f14cadb15b06371fb9a6daf885dc1c4bccf975b9 10-Aug-2010 Elliott Hughes <enh@google.com> Minor TimeZone cleanup.

Getting ready to do some real work here, I thought I'd improve the
documentation and remove some cruft.

Bug: 2870945
Change-Id: I771badc8afa5c0a5f77880f64e1542d77672d984
21557bb6a8f35a2f9889adba449cac950c9d41b9 23-Jun-2010 Elliott Hughes <enh@google.com> Add TimeZones.forLocale, plus some tidying.

The new feature here is TimeZones.forLocale and the accompanying JNI. I've also
taken the liberty of pulling the time zone stuff out of ICU.java and ICU.cpp,
and I've moved some of the ICU-related code I've written recently (NativeIDN,
NativeNormalizer, and NativePluralRules) into a new libcore.icu package.

I've also renamed various things so the implementation details use the same
terminology as the thing they're implementing.

Bug: 2790386
Change-Id: Ie39a2f5f7023e8e29864de15790be8a660f5cba6
e32b21f14d52bac429a9c54fe031f9e92c911d64 18-Jun-2010 Jesse Wilson <jessewilson@google.com> Implementing ZoneInfo.hasSameRules().

Moving TimeZoneTest to OldTimeZoneTest and removing test methods
that are duplicated between libcore and Harmony.

Also adding Objects.equals() to make implementing this easy,
and removing redundant time zone tests. I did a few searches
to find candidate code that could take advantage of this new
utility method and adopted it there.

Change-Id: I133298f1b36d755bd35c1ad0dc0ab366fd164270
2f633269e71f3fb0b6248cc695cf37c5cbaf7e60 20-Apr-2010 Jesse Wilson <jessewilson@google.com> Fixing TimeZone.setDefault() documentation.

Set expectations for date formatting to tolerate "GMT-07" in the
output. The alternative is to emit an ambigous date string.
Applications that want pretty date formatting should use the
proper facilities: SimpleDateFormat, etc.

This problem was detected by org.apache.harmony.luni.tests.java.util.DateTest.test_toString
757a7942eed2b0aa457f8517a0259d2ac82c5b18 16-Apr-2010 Elliott Hughes <enh@google.com> Merge LocaleData and Resources, rename Resources to ICU.

Also move our ICU tests into our little tree of tests.

Bug: 2596471
Change-Id: I73b53d74c26ef9bf670f12cac58b51ba61eefead
3106a99ccbe2e2a25bb66266d0ee42d98dd18099 13-Apr-2010 Elliott Hughes <enh@google.com> Improve documentation about the user's default locale.

Add a bit of text to Locale's class documentation, and include a link from
every method that uses Locale.getDefault(). Also try to consistently say
"user's default locale", as a subliminal hint that this isn't necessarily
the developer's locale, nor en_US.

Bug: 2593000
Change-Id: Ieebe864ed6b9fecbfef5d5415269299739cedd1b
dc30337534e7970bb5b8cfbcb3c2b7f75d818795 05-Dec-2009 Elliott Hughes <enh@google.com> Improve TimeZone documentation.

We can't do anything about the RI's unfortunate choice of method names,
but improving our documentation might help reduce the confusion they
cause.

Bug: 2244560
4fefecee9d4a5d2a4510f516b4015607b19e8d09 13-Nov-2009 Jean-Baptiste Queru <jbq@google.com> eclair snapshot
1c422fc0ab0692e10a05af6f48c6276c4dad4bea 16-Oct-2009 Jesse Wilson <jessewilson@google.com> Respond to impossible CloneNotSupportedExceptions with AssertionErrors.

See bug 2183132.
a389b4a499f40379b0b204d7ba1c2057663d95c0 11-Aug-2009 Jesse Wilson <jessewilson@google.com> Update Luni to Harmony r802921.

Notable changes:
- replaced StringBuffer with StringBuilder in several places
- fixed a problem with BufferedInputStream's newline characters (EBCDIC)
- cleanup Timer's finalizer helper object
- new cache for the canonical path of a file
- fixed concurrency issue with ArrayList
- floating point parsing now trims length for very small numbers
- encoding specified "UTF-8" when converting some byte[]s to strings (JarURLConnection, Util, OSFileSystem)
- Harmony now implements floor and ceil in Java. We continue to use native code.
f5597e626ecf7949d249dea08c1a2964d890ec11 25-Jul-2009 Jesse Wilson <jessewilson@google.com> Integrate luni module (but not tests) to Harmony r772995.

Notable changes
- Stripped "@since Android 1.0" from many files. Most files
are now 100% the same in Dalvik and Harmony.
- AbstractStringBuilder.reverse() supports surrogates
- AbstractStringBuilder shares less to waste less memory
- Bitset optimized
- BufferedInputStream changed to support unsynchronized close()
- BufferedOutputStream does flushInternal
- BufferedReader supports EBCDIC NEL
- Collections.synchronizedList().indexOf() does a copy for more concurrency
- Classes in nio module changed: DatagramChannelImpl, SocketChannelImpl
and ServerSocketChannelImpl (these depend on internal APIs changed in
this update)
- DataInputStream/DataOutputStream now use a small buffer to limit the
number of times the underlying stream is accessed
- Date now has a minutes offset, more efficient toString()
- ExposedByteArrayInputStream: new internal class
- DeleteOnExit moved to top-level class
- FileDescriptor.isValid() now non-native
- Float, Double lessThan optimized (fix for compare(-0.0F, 0.0F) still pending)
- FileURLConnection now guesses content types from streams
- HashMap iterator changes
- Hashtable iterator changes
- INetworkSystem
- removes bind2(), createMulticastSocket, sendStream(),
- renames createSocket to createStreamSocket
- JarURLConnection rewritten
- LinkedHashMap: new iterator
- Locale, Currency, TimeZone: now use ICU in Harmony, plain Java in Dalvik
- ObjectInputStream: Accessor objects in Harmony, direct native in Dalvik
- ProxyClassFile - many changes
- String - optimized ascii for toLowerCase, toUpperCase, compare
- Timer - rewritten
- TreeMap - rewritten
- URLClassLoader - new
- URLConnection - new guessContentTypeFromStream(), uses org.apache.harmony.awt.www.content
to lookup content type handlers
adc854b798c1cfe3bfd4c27d68d5cee38ca617da 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
1c0fed63c71ddb230f3b304aac12caffbedf2f21 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
dd828f42a5c83b4270d4fbf6fce2da1878f1e84a 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
fdb2704414a9ed92394ada0d1395e4db86889465 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution