/** * Creates a date formatter using the specified non-localized pattern, with the default * DateFormatSymbols for the given locale. * * @param pattern the non-localized pattern to use. * @param locale the locale to use for the formatting symbols. * @throws NullPointerException if the pattern is null. * @throws IllegalArgumentException if the pattern is invalid. */ public SimpleDateFormat(String pattern, Locale locale) { super(); calendar = new GregorianCalendar(locale); computeCenturyStart(); tokens = new ArrayList(); formatData = new DateFormatSymbols(locale); compileFormat(pattern); this.pattern = pattern; numberFormat = NumberFormat.getInstance(locale); numberFormat.setGroupingUsed(false); numberFormat.setParseIntegerOnly(true); numberFormat.setMaximumFractionDigits(0); }
/** * Creates a date formatter using the specified non-localized pattern. The specified * DateFormatSymbols will be used when formatting. * * @param pattern the non-localized pattern to use. * @param formatData the formatting symbols to use. * @throws NullPointerException if the pattern or formatData is null. * @throws IllegalArgumentException if the pattern is invalid. */ public SimpleDateFormat(String pattern, DateFormatSymbols formatData) { super(); calendar = new GregorianCalendar(); computeCenturyStart(); tokens = new ArrayList(); if (formatData == null) throw new NullPointerException("formatData"); this.formatData = formatData; compileFormat(pattern); this.pattern = pattern; numberFormat = NumberFormat.getInstance(); numberFormat.setGroupingUsed(false); numberFormat.setParseIntegerOnly(true); numberFormat.setMaximumFractionDigits(0); }
/** * Reads the serialized version of this object. If the serialized data is only version 0, then the * date for the start of the century for interpreting two digit years is computed. The pattern is * parsed and compiled following the process of reading in the serialized data. * * @param stream the object stream to read the data from. * @throws IOException if an I/O error occurs. * @throws ClassNotFoundException if the class of the serialized data could not be found. * @throws InvalidObjectException if the pattern is invalid. */ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); if (serialVersionOnStream < 1) { computeCenturyStart(); serialVersionOnStream = 1; } else // Ensure that defaultCentury gets set. set2DigitYearStart(defaultCenturyStart); // Set up items normally taken care of by the constructor. tokens = new ArrayList(); try { compileFormat(pattern); } catch (IllegalArgumentException e) { throw new InvalidObjectException("The stream pattern was invalid."); } }
/** Constructs a SimpleDateFormat using the default pattern for the default locale. */ public SimpleDateFormat() { /* * There does not appear to be a standard API for determining * what the default pattern for a locale is, so use package-scope * variables in DateFormatSymbols to encapsulate this. */ super(); Locale locale = Locale.getDefault(); calendar = new GregorianCalendar(locale); computeCenturyStart(); tokens = new ArrayList(); formatData = new DateFormatSymbols(locale); pattern = (formatData.dateFormats[DEFAULT] + ' ' + formatData.timeFormats[DEFAULT]); compileFormat(pattern); numberFormat = NumberFormat.getInstance(locale); numberFormat.setGroupingUsed(false); numberFormat.setParseIntegerOnly(true); numberFormat.setMaximumFractionDigits(0); }