diff options
| author | 2013-03-18 15:24:31 -0700 | |
|---|---|---|
| committer | 2013-03-18 15:24:31 -0700 | |
| commit | c5c6d4167b66c79652c5208a2dfe091a8c735e6d (patch) | |
| tree | 54a142b579725fd7dc4306d8d0d52254d0050e5e | |
| parent | 0e4071c73b9606de75ce74209eb82708b7cfa3cf (diff) | |
| parent | 6317315e733f115aa6ad0339c1a334607fd04342 (diff) | |
am 6317315e: Merge "Deliberately break DateFormat.format\'s formatting of \'k\' for compatibility."
* commit '6317315e733f115aa6ad0339c1a334607fd04342':
Deliberately break DateFormat.format's formatting of 'k' for compatibility.
| -rw-r--r-- | core/java/android/text/format/DateFormat.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java index ef2c24871793..c4e960aee961 100644 --- a/core/java/android/text/format/DateFormat.java +++ b/core/java/android/text/format/DateFormat.java @@ -43,11 +43,17 @@ import libcore.icu.LocaleData; * for both formatting and parsing dates. For the canonical documentation * of format strings, see {@link java.text.SimpleDateFormat}. * - * <p>The format methods in this class implement a subset of Unicode + * <p>The {@code format} methods in this class implement a subset of Unicode * <a href="http://www.unicode.org/reports/tr35/#Date_Format_Patterns">UTS #35</a> patterns. - * The subset supported by this class includes the following format characters: - * {@code acdEHhLKkLMmsyz}. See {@link java.text.SimpleDateFormat} for more documentation - * about patterns, or if you need a more compete implementation. + * The subset currently supported by this class includes the following format characters: + * {@code acdEHhLKkLMmsyz}. Up to API level 17, only {@code adEhkMmszy} were supported. + * Note that this class incorrectly implements {@code k} as if it were {@code H} for backwards + * compatibility. + * + * <p>See {@link java.text.SimpleDateFormat} for more documentation + * about patterns, or if you need a more complete or correct implementation. + * Note that the non-{@code format} methods in this class are implemented by + * {@code SimpleDateFormat}. */ public class DateFormat { /** @deprecated Use a literal {@code '} instead. */ @@ -74,7 +80,11 @@ public class DateFormat { @Deprecated public static final char HOUR = 'h'; - /** @deprecated Use a literal {@code 'k'} instead. */ + /** + * @deprecated Use a literal {@code 'H'} (for compatibility with {@link SimpleDateFormat} + * and Unicode) or {@code 'k'} (for compatibility with Android releases up to and including + * Jelly Bean MR-1) instead. Note that the two are incompatible. + */ @Deprecated public static final char HOUR_OF_DAY = 'k'; @@ -441,10 +451,13 @@ public class DateFormat { } break; case 'H': // hour in day (0-23) - case 'k': // hour in day (1-24) + case 'k': // hour in day (1-24) [but see note below] { int hour = inDate.get(Calendar.HOUR_OF_DAY); - if (c == 'k' && hour == 0) { + // Historically on Android 'k' was interpreted as 'H', which wasn't + // implemented, so pretty much all callers that want to format 24-hour + // times are abusing 'k'. http://b/8359981. + if (false && c == 'k' && hour == 0) { hour = 24; } replacement = zeroPad(hour, count); |