DateFormat.java revision e4f01dff49442840faa828dcff0d1583a2e68530
1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.text; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InvalidObjectException; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Calendar; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Date; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Hashtable; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Locale; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TimeZone; 26162b0775772fa66b7eb634760a8159a60c1ddceaElliott Hughesimport libcore.icu.ICU; 27162b0775772fa66b7eb634760a8159a60c1ddceaElliott Hughesimport libcore.icu.LocaleData; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 30b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * Formats or parses dates and times. 319b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 32b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * <p>This class provides factories for obtaining instances configured for a specific locale. 33b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * The most common subclass is {@link SimpleDateFormat}. 349b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 35b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * <h4>Sample Code</h4> 36b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * <p>This code: 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <pre> 38b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * DateFormat[] formats = new DateFormat[] { 39b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * DateFormat.getDateInstance(), 40b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * DateFormat.getDateTimeInstance(), 41b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * DateFormat.getTimeInstance(), 42b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * }; 43b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * for (DateFormat df : formats) { 44b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * System.out.println(df.format(new Date(0))); 45b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * df.setTimeZone(TimeZone.getTimeZone("UTC")); 46b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * System.out.println(df.format(new Date(0))); 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * } 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </pre> 499b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 50b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * <p>Produces this output when run on an {@code en_US} device in the America/Los_Angeles time zone: 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <pre> 52b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * Dec 31, 1969 53b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * Jan 1, 1970 54b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * Dec 31, 1969 4:00:00 PM 55b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * Jan 1, 1970 12:00:00 AM 56b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * 4:00:00 PM 57b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * 12:00:00 AM 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </pre> 59b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * And will produce similarly appropriate localized human-readable output on any user's system. 60b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * Notice how the same point in time when formatted can appear to be a different time when rendered 61b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * for a different time zone. This is one reason why formatting should be left until the data will 62b98632738dfc72ba32ae0160eada03a97a303288Elliott Hughes * only be presented to a human. Machines should interchange "Unix time" integers. 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic abstract class DateFormat extends Format { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 7218322306649953788L; 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The calendar that this {@code DateFormat} uses to format a number 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * representing a date. 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Calendar calendar; 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The number format used to format a number. 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected NumberFormat numberFormat; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The format style constant defining the default format style. The default 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is MEDIUM. 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 830d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int DEFAULT = 2; 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The format style constant defining the full style. 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 880d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int FULL = 0; 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The format style constant defining the long style. 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 930d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int LONG = 1; 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The format style constant defining the medium style. 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 980d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int MEDIUM = 2; 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The format style constant defining the short style. 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1030d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int SHORT = 3; 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'G' field alignment, corresponds 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#ERA} field. 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1090d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int ERA_FIELD = 0; 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'y' field alignment, corresponds 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#YEAR} field. 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1150d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int YEAR_FIELD = 1; 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'M' field alignment, corresponds 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#MONTH} field. 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1210d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int MONTH_FIELD = 2; 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'd' field alignment, corresponds 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#DATE} field. 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1270d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int DATE_FIELD = 3; 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'k' field alignment, corresponds 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#HOUR_OF_DAY} field. {@code HOUR_OF_DAY1_FIELD} is 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * used for the one-based 24-hour clock. For example, 23:59 + 01:00 results 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in 24:59. 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1350d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int HOUR_OF_DAY1_FIELD = 4; 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'H' field alignment, corresponds 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#HOUR_OF_DAY} field. {@code HOUR_OF_DAY0_FIELD} is 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * used for the zero-based 24-hour clock. For example, 23:59 + 01:00 results 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in 00:59. 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1430d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int HOUR_OF_DAY0_FIELD = 5; 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'm' field alignment, corresponds to the 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#MINUTE} field. 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1490d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int MINUTE_FIELD = 6; 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 's' field alignment, corresponds to the 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#SECOND} field. 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1550d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int SECOND_FIELD = 7; 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'S' field alignment, corresponds to the 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#MILLISECOND} field. 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1610d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int MILLISECOND_FIELD = 8; 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'E' field alignment, corresponds to the 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#DAY_OF_WEEK} field. 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1670d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int DAY_OF_WEEK_FIELD = 9; 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'D' field alignment, corresponds to the 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#DAY_OF_YEAR} field. 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1730d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int DAY_OF_YEAR_FIELD = 10; 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'F' field alignment, corresponds to the 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#DAY_OF_WEEK_IN_MONTH} field. 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1790d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11; 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'w' field alignment, corresponds to the 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#WEEK_OF_YEAR} field. 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1850d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int WEEK_OF_YEAR_FIELD = 12; 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'W' field alignment, corresponds to the 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#WEEK_OF_MONTH} field. 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1910d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int WEEK_OF_MONTH_FIELD = 13; 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'a' field alignment, corresponds to the 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Calendar#AM_PM} field. 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1970d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int AM_PM_FIELD = 14; 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * FieldPosition selector for 'h' field alignment, corresponding to the 201143e8c9cf91cfc01c3c91c8e93cad661ec7554eeElliott Hughes * {@link Calendar#HOUR} field. 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2030d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int HOUR1_FIELD = 15; 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 206143e8c9cf91cfc01c3c91c8e93cad661ec7554eeElliott Hughes * The {@code FieldPosition} selector for 'K' field alignment, corresponding to the 207143e8c9cf91cfc01c3c91c8e93cad661ec7554eeElliott Hughes * {@link Calendar#HOUR} field. 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2090d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int HOUR0_FIELD = 16; 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code FieldPosition} selector for 'z' field alignment, corresponds 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to the {@link Calendar#ZONE_OFFSET} and {@link Calendar#DST_OFFSET} 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * fields. 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2160d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final int TIMEZONE_FIELD = 17; 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of {@code DateFormat}. 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected DateFormat() { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a new instance of {@code DateFormat} with the same properties. 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object clone() { 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DateFormat clone = (DateFormat) super.clone(); 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project clone.calendar = (Calendar) calendar.clone(); 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project clone.numberFormat = (NumberFormat) numberFormat.clone(); 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return clone; 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares this date format with the specified object and indicates if they 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * are equal. 238f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to compare with this date format. 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if {@code object} is a {@code DateFormat} object and 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * it has the same properties as this date format; {@code false} 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * otherwise. 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #hashCode 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object object) { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (this == object) { 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return true; 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(object instanceof DateFormat)) { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DateFormat dateFormat = (DateFormat) object; 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return numberFormat.equals(dateFormat.numberFormat) 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && calendar.getTimeZone().equals( 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dateFormat.calendar.getTimeZone()) 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && calendar.getFirstDayOfWeek() == dateFormat.calendar 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getFirstDayOfWeek() 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && calendar.getMinimalDaysInFirstWeek() == dateFormat.calendar 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getMinimalDaysInFirstWeek() 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && calendar.isLenient() == dateFormat.calendar.isLenient(); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Formats the specified object as a string using the pattern of this date 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * format and appends the string to the specified string buffer. 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If the {@code field} member of {@code field} contains a value specifying 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a format field, then its {@code beginIndex} and {@code endIndex} members 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * will be updated with the position of the first occurrence of this field 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the formatted text. 2739b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the source object to format, must be a {@code Date} or a 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Number}. If {@code object} is a number then a date is 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * constructed using the {@code longValue()} of the number. 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param buffer 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the target string buffer to append the formatted date/time to. 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param field 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * on input: an optional alignment field; on output: the offsets 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of the alignment field in the formatted text. 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the string buffer. 2849b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * @throws IllegalArgumentException 2859b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * if {@code object} is neither a {@code Date} nor a 2869b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * {@code Number} instance. 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 289cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes public final StringBuffer format(Object object, StringBuffer buffer, FieldPosition field) { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (object instanceof Date) { 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return format((Date) object, buffer, field); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (object instanceof Number) { 294cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes return format(new Date(((Number) object).longValue()), buffer, field); 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 296cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes throw new IllegalArgumentException("Bad class: " + object.getClass()); 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Formats the specified date using the rules of this date format. 301f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param date 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the date to format. 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the formatted string. 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final String format(Date date) { 307cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes return format(date, new StringBuffer(), new FieldPosition(0)).toString(); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Formats the specified date as a string using the pattern of this date 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * format and appends the string to the specified string buffer. 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If the {@code field} member of {@code field} contains a value specifying 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a format field, then its {@code beginIndex} and {@code endIndex} members 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * will be updated with the position of the first occurrence of this field 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the formatted text. 3189b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param date 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the date to format. 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param buffer 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the target string buffer to append the formatted date/time to. 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param field 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * on input: an optional alignment field; on output: the offsets 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of the alignment field in the formatted text. 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the string buffer. 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 328cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes public abstract StringBuffer format(Date date, StringBuffer buffer, FieldPosition field); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 33193f0d794f264baeb7a90d02e58cae60305b3912aElliott Hughes * Returns an array of locales for which custom {@code DateFormat} instances 33293f0d794f264baeb7a90d02e58cae60305b3912aElliott Hughes * are available. 333d2d7abef3e9b73a57cdf1f2afd678d7f48945679Elliott Hughes * <p>Note that Android does not support user-supplied locale service providers. 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Locale[] getAvailableLocales() { 336757a7942eed2b0aa457f8517a0259d2ac82c5b18Elliott Hughes return ICU.getAvailableDateFormatLocales(); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the calendar used by this {@code DateFormat}. 341f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the calendar used by this date format. 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Calendar getCalendar() { 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return calendar; 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing dates in 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the DEFAULT style for the default locale. 351f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for the default style and locale. 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 3540d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getDateInstance() { 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getDateInstance(DEFAULT); 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing dates in 3603106a99ccbe2e2a25bb66266d0ee42d98dd18099Elliott Hughes * the specified style for the user's default locale. 3613106a99ccbe2e2a25bb66266d0ee42d98dd18099Elliott Hughes * See "<a href="../util/Locale.html#default_locale">Be wary of the default locale</a>". 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param style 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for {@code style} and the default 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * locale. 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code style} is not one of SHORT, MEDIUM, LONG, FULL, or 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * DEFAULT. 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 3700d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getDateInstance(int style) { 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkDateStyle(style); 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getDateInstance(style, Locale.getDefault()); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing dates in 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the specified style for the specified locale. 378f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param style 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param locale 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the locale. 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code style} is not one of SHORT, MEDIUM, LONG, FULL, or 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * DEFAULT. 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for {@code style} and 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code locale}. 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 3890d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getDateInstance(int style, Locale locale) { 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkDateStyle(style); 391e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath if (locale == null) { 392e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath throw new NullPointerException("locale == null"); 393e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath } 394757a7942eed2b0aa457f8517a0259d2ac82c5b18Elliott Hughes return new SimpleDateFormat(LocaleData.get(locale).getDateFormat(style), locale); 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing dates 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and time values in the DEFAULT style for the default locale. 400f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for the default style and locale. 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 4030d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getDateTimeInstance() { 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getDateTimeInstance(DEFAULT, DEFAULT); 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing of both 4093106a99ccbe2e2a25bb66266d0ee42d98dd18099Elliott Hughes * dates and time values in the manner appropriate for the user's default locale. 4103106a99ccbe2e2a25bb66266d0ee42d98dd18099Elliott Hughes * See "<a href="../util/Locale.html#default_locale">Be wary of the default locale</a>". 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param dateStyle 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param timeStyle 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for {@code dateStyle}, 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code timeStyle} and the default locale. 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code dateStyle} or {@code timeStyle} is not one of 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * SHORT, MEDIUM, LONG, FULL, or DEFAULT. 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 4210d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) { 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkTimeStyle(timeStyle); 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkDateStyle(dateStyle); 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getDateTimeInstance(dateStyle, timeStyle, Locale.getDefault()); 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing dates 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and time values in the specified styles for the specified locale. 430f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param dateStyle 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param timeStyle 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param locale 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the locale. 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for {@code dateStyle}, 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code timeStyle} and {@code locale}. 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code dateStyle} or {@code timeStyle} is not one of 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * SHORT, MEDIUM, LONG, FULL, or DEFAULT. 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 4430d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) { 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkTimeStyle(timeStyle); 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkDateStyle(dateStyle); 446e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath if (locale == null) { 447e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath throw new NullPointerException("locale == null"); 448e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath } 449757a7942eed2b0aa457f8517a0259d2ac82c5b18Elliott Hughes LocaleData localeData = LocaleData.get(locale); 4506ca85c49efc0f02d69933f60b207b964a999061fElliott Hughes String pattern = localeData.getDateFormat(dateStyle) + " " + localeData.getTimeFormat(timeStyle); 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new SimpleDateFormat(pattern, locale); 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing dates 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and times in the SHORT style for the default locale. 457f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for the SHORT style and default 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * locale. 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 4610d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getInstance() { 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getDateTimeInstance(SHORT, SHORT); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 46668d78caff1997dd870f0265c1c642288aee6e653Narayan Kamath * @hide for internal use only. 46768d78caff1997dd870f0265c1c642288aee6e653Narayan Kamath */ 46868d78caff1997dd870f0265c1c642288aee6e653Narayan Kamath public static final void set24HourTimePref(boolean is24Hour) { 46968d78caff1997dd870f0265c1c642288aee6e653Narayan Kamath } 47068d78caff1997dd870f0265c1c642288aee6e653Narayan Kamath 47168d78caff1997dd870f0265c1c642288aee6e653Narayan Kamath /** 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the {@code NumberFormat} used by this {@code DateFormat}. 473f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code NumberFormat} used by this date format. 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public NumberFormat getNumberFormat() { 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return numberFormat; 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing time 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * values in the DEFAULT style for the default locale. 483f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for the default style and locale. 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 4860d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getTimeInstance() { 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getTimeInstance(DEFAULT); 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing time 4923106a99ccbe2e2a25bb66266d0ee42d98dd18099Elliott Hughes * values in the specified style for the user's default locale. 4933106a99ccbe2e2a25bb66266d0ee42d98dd18099Elliott Hughes * See "<a href="../util/Locale.html#default_locale">Be wary of the default locale</a>". 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param style 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for {@code style} and the default 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * locale. 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code style} is not one of SHORT, MEDIUM, LONG, FULL, or 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * DEFAULT. 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 5020d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getTimeInstance(int style) { 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkTimeStyle(style); 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getTimeInstance(style, Locale.getDefault()); 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code DateFormat} instance for formatting and parsing time 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * values in the specified style for the specified locale. 510f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param style 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one of SHORT, MEDIUM, LONG, FULL, or DEFAULT. 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param locale 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the locale. 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code style} is not one of SHORT, MEDIUM, LONG, FULL, or 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * DEFAULT. 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat} instance for {@code style} and 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code locale}. 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 5210d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final DateFormat getTimeInstance(int style, Locale locale) { 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkTimeStyle(style); 523e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath if (locale == null) { 524e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath throw new NullPointerException("locale == null"); 525e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath } 526e4f01dff49442840faa828dcff0d1583a2e68530Narayan Kamath 527757a7942eed2b0aa457f8517a0259d2ac82c5b18Elliott Hughes return new SimpleDateFormat(LocaleData.get(locale).getTimeFormat(style), locale); 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the time zone of this date format's calendar. 532f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the time zone of the calendar used by this date format. 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TimeZone getTimeZone() { 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return calendar.getTimeZone(); 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int hashCode() { 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return calendar.getFirstDayOfWeek() 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + calendar.getMinimalDaysInFirstWeek() 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + calendar.getTimeZone().hashCode() 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + (calendar.isLenient() ? 1231 : 1237) 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + numberFormat.hashCode(); 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates whether the calendar used by this date format is lenient. 550f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the calendar is lenient; {@code false} otherwise. 552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isLenient() { 554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return calendar.isLenient(); 555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses a date from the specified string using the rules of this date 559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * format. 560f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string to parse. 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code Date} resulting from the parsing. 5649b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * @throws ParseException 5659b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * if an error occurs during parsing. 566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Date parse(String string) throws ParseException { 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParsePosition position = new ParsePosition(0); 569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date = parse(string, position); 570fe1eba10c5d69e115dfab55d82cc22d42e9fbae5Elliott Hughes if (position.getIndex() == 0) { 571a8bc3bd2794b36c5e935aff7b932a7945e98bf30Elliott Hughes throw new ParseException("Unparseable date: \"" + string + "\"", 572a8bc3bd2794b36c5e935aff7b932a7945e98bf30Elliott Hughes position.getErrorIndex()); 573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return date; 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses a date from the specified string starting at the index specified 579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by {@code position}. If the string is successfully parsed then the index 580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of the {@code ParsePosition} is updated to the index following the parsed 581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * text. On error, the index is unchanged and the error index of {@code 582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ParsePosition} is set to the index where the error occurred. 583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * By default, parsing is lenient: If the input is not in the form used by 585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this object's format method but can still be parsed as a date, then the 586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parse succeeds. Clients may insist on strict adherence to the format by 587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * calling {@code setLenient(false)}. 5889b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string to parse. 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param position 592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * input/output parameter, specifies the start index in {@code 593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * string} from where to start parsing. If parsing is successful, 594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * it is updated with the index following the parsed text; on 595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * error, the index is unchanged and the error index is set to 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the index where the error occurred. 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the date resulting from the parse, or {@code null} if there is an 598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * error. 599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract Date parse(String string, ParsePosition position); 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses a date from the specified string starting at the index specified 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by {@code position}. If the string is successfully parsed then the index 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of the {@code ParsePosition} is updated to the index following the parsed 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * text. On error, the index is unchanged and the error index of 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ParsePosition} is set to the index where the error occurred. 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * By default, parsing is lenient: If the input is not in the form used by 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this object's format method but can still be parsed as a date, then the 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parse succeeds. Clients may insist on strict adherence to the format by 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * calling {@code setLenient(false)}. 6139b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string to parse. 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param position 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * input/output parameter, specifies the start index in 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code string} from where to start parsing. If parsing is 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * successful, it is updated with the index following the parsed 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * text; on error, the index is unchanged and the error index 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is set to the index where the error occurred. 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the date resulting from the parsing, or {@code null} if there is 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * an error. 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object parseObject(String string, ParsePosition position) { 627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return parse(string, position); 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the calendar used by this date format. 632f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param cal 634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the new calendar. 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setCalendar(Calendar cal) { 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project calendar = cal; 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Specifies whether or not date/time parsing shall be lenient. With lenient 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parsing, the parser may use heuristics to interpret inputs that do not 643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * precisely match this object's format. With strict parsing, inputs must 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * match this object's format. 645f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code true} to set the calendar to be lenient, {@code false} 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * otherwise. 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setLenient(boolean value) { 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project calendar.setLenient(value); 652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the {@code NumberFormat} used by this date format. 656f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param format 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the new number format. 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setNumberFormat(NumberFormat format) { 661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project numberFormat = format; 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets the time zone of the calendar used by this date format. 666f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param timezone 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the new time zone. 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setTimeZone(TimeZone timezone) { 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project calendar.setTimeZone(timezone); 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The instances of this inner class are used as attribute keys and values 676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in {@code AttributedCharacterIterator} that the 677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link SimpleDateFormat#formatToCharacterIterator(Object)} method returns. 678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * There is no public constructor in this class, the only instances are the 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * constants defined here. 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static class Field extends Format.Field { 683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 7441350119349544720L; 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Hashtable<Integer, Field> table = new Hashtable<Integer, Field>(); 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the era part of a date. 690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 6910d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field ERA = new Field("era", Calendar.ERA); 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the year part of a date. 695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 6960d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field YEAR = new Field("year", Calendar.YEAR); 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the month part of a date. 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7010d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field MONTH = new Field("month", Calendar.MONTH); 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the hour of the day part of a date (0-11). 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7060d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field HOUR_OF_DAY0 = new Field("hour of day", Calendar.HOUR_OF_DAY); 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the hour of the day part of a date (1-12). 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7110d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field HOUR_OF_DAY1 = new Field("hour of day 1", -1); 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the minute part of a time. 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7160d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field MINUTE = new Field("minute", Calendar.MINUTE); 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the second part of a time. 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7210d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field SECOND = new Field("second", Calendar.SECOND); 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the millisecond part of a time. 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7260d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field MILLISECOND = new Field("millisecond", Calendar.MILLISECOND); 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the day of the week part of a date. 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7310d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field DAY_OF_WEEK = new Field("day of week", Calendar.DAY_OF_WEEK); 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the day of the month part of a date. 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7360d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field DAY_OF_MONTH = new Field("day of month", Calendar.DAY_OF_MONTH); 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the day of the year part of a date. 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7410d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field DAY_OF_YEAR = new Field("day of year", Calendar.DAY_OF_YEAR); 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the day of the week in the month part of a date. 745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7460d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field DAY_OF_WEEK_IN_MONTH = new Field("day of week in month", 74703c0a8e681c776fdba0389ab8593282139afc6d6Elliott Hughes Calendar.DAY_OF_WEEK_IN_MONTH); 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the week of the year part of a date. 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7520d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field WEEK_OF_YEAR = new Field("week of year", 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Calendar.WEEK_OF_YEAR); 754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the week of the month part of a date. 757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7580d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field WEEK_OF_MONTH = new Field("week of month", 759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Calendar.WEEK_OF_MONTH); 760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the time indicator part of a date. 763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7640d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field AM_PM = new Field("am pm", Calendar.AM_PM); 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the hour part of a date (0-11). 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7690d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field HOUR0 = new Field("hour", Calendar.HOUR); 770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the hour part of a date (1-12). 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 7740d4ce4227fa818288b8db762b640dfa21e3162f5Elliott Hughes public static final Field HOUR1 = new Field("hour 1", -1); 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Marks the time zone part of a date. 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 77978b660e21412ff36d3eed179ff400d8fa690267eNarayan Kamath public static final Field TIME_ZONE = new Field("time zone", -1); 780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The calendar field that this field represents. 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private int calendarField = -1; 785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of {@code DateFormat.Field} with the given 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * fieldName and calendar field. 7899b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param fieldName 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the field name. 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param calendarField 793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the calendar field type of the field. 794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Field(String fieldName, int calendarField) { 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(fieldName); 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.calendarField = calendarField; 798a0a4196cb15480959f053d0ebe6b412bd23c8170Elliott Hughes if (calendarField != -1 && table.get(Integer.valueOf(calendarField)) == null) { 799a0a4196cb15480959f053d0ebe6b412bd23c8170Elliott Hughes table.put(Integer.valueOf(calendarField), this); 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the Calendar field that this field represents. 805f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the calendar field. 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getCalendarField() { 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return calendarField; 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the {@code DateFormat.Field} instance for the given calendar 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * field. 815f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param calendarField 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a calendar field constant. 818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code DateFormat.Field} corresponding to 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code calendarField}. 820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code calendarField} is negative or greater than the 822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * field count of {@code Calendar}. 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Field ofCalendarField(int calendarField) { 825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (calendarField < 0 || calendarField >= Calendar.FIELD_COUNT) { 826cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes throw new IllegalArgumentException("Field out of range: " + calendarField); 827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 828a0a4196cb15480959f053d0ebe6b412bd23c8170Elliott Hughes return table.get(Integer.valueOf(calendarField)); 829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static void checkDateStyle(int style) { 833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(style == SHORT || style == MEDIUM || style == LONG 834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project || style == FULL || style == DEFAULT)) { 835cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes throw new IllegalArgumentException("Illegal date style: " + style); 836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static void checkTimeStyle(int style) { 840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (!(style == SHORT || style == MEDIUM || style == LONG 841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project || style == FULL || style == DEFAULT)) { 842cff1616012dc0d56c2da9af2b9b1183e76c7e044Elliott Hughes throw new IllegalArgumentException("Illegal time style: " + style); 843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 846