| Index: source/i18n/unicode/smpdtfmt.h
 | 
| diff --git a/source/i18n/unicode/smpdtfmt.h b/source/i18n/unicode/smpdtfmt.h
 | 
| index e6e96ae30d2cde7b61e6a28bc9aed45066f30625..e6cf28d22be00d10498342ae7b2248c50c5053bc 100644
 | 
| --- a/source/i18n/unicode/smpdtfmt.h
 | 
| +++ b/source/i18n/unicode/smpdtfmt.h
 | 
| @@ -1,5 +1,7 @@
 | 
| +// Copyright (C) 2016 and later: Unicode, Inc. and others.
 | 
| +// License & terms of use: http://www.unicode.org/copyright.html
 | 
|  /*
 | 
| -* Copyright (C) 1997-2015, International Business Machines Corporation and
 | 
| +* Copyright (C) 1997-2016, International Business Machines Corporation and
 | 
|  * others. All Rights Reserved.
 | 
|  *******************************************************************************
 | 
|  *
 | 
| @@ -89,7 +91,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         <td style="text-align: center" rowspan="3">G</td>
 | 
|   *         <td style="text-align: center">1..3</td>
 | 
|   *         <td>AD</td>
 | 
| - *         <td rowspan="3">Era - Replaced with the Era string for the current date. One to three letters for the 
 | 
| + *         <td rowspan="3">Era - Replaced with the Era string for the current date. One to three letters for the
 | 
|   *         abbreviated form, four letters for the long (wide) form, five for the narrow form.</td>
 | 
|   *     </tr>
 | 
|   *     <tr>
 | 
| @@ -218,7 +220,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         <td rowspan="3" style="text-align: center">q</td>
 | 
|   *         <td style="text-align: center">1..2</td>
 | 
|   *         <td>02</td>
 | 
| - *         <td rowspan="3"><b>Stand-Alone</b> Quarter - Use one or two for the numerical quarter, three for the abbreviation, 
 | 
| + *         <td rowspan="3"><b>Stand-Alone</b> Quarter - Use one or two for the numerical quarter, three for the abbreviation,
 | 
|   *         or four for the full name (five for the narrow name is not yet supported).</td>
 | 
|   *     </tr>
 | 
|   *     <tr>
 | 
| @@ -254,7 +256,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         <td rowspan="4" style="text-align: center">L</td>
 | 
|   *         <td style="text-align: center">1..2</td>
 | 
|   *         <td>09</td>
 | 
| - *         <td rowspan="4"><b>Stand-Alone</b> Month - Use one or two for the numerical month, three for the abbreviation, 
 | 
| + *         <td rowspan="4"><b>Stand-Alone</b> Month - Use one or two for the numerical month, three for the abbreviation,
 | 
|   *         four for the full (wide) name, or 5 for the narrow name. With two ("LL"), the month number is zero-padded if
 | 
|   *         necessary (e.g. "08")</td>
 | 
|   *     </tr>
 | 
| @@ -310,7 +312,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         <td>2451334</td>
 | 
|   *         <td>Modified Julian day. This is different from the conventional Julian day number in two regards.
 | 
|   *         First, it demarcates days at local zone midnight, rather than noon GMT. Second, it is a local number;
 | 
| - *         that is, it depends on the local time zone. It can be thought of as a single number that encompasses 
 | 
| + *         that is, it depends on the local time zone. It can be thought of as a single number that encompasses
 | 
|   *         all the date-related fields.</td>
 | 
|   *     </tr>
 | 
|   *     <tr>
 | 
| @@ -319,7 +321,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         <td rowspan="4" style="text-align: center">E</td>
 | 
|   *         <td style="text-align: center">1..3</td>
 | 
|   *         <td>Tue</td>
 | 
| - *         <td rowspan="4">Day of week - Use one through three letters for the short day, four for the full (wide) name, 
 | 
| + *         <td rowspan="4">Day of week - Use one through three letters for the short day, four for the full (wide) name,
 | 
|   *         five for the narrow name, or six for the short name.</td>
 | 
|   *     </tr>
 | 
|   *     <tr>
 | 
| @@ -539,7 +541,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         <td>The <i>generic location format</i>.
 | 
|   *         Where that is unavailable, falls back to the <i>long localized GMT format</i> ("OOOO";
 | 
|   *         Note: Fallback is only necessary with a GMT-style Time Zone ID, like Etc/GMT-830.)<br>
 | 
| - *         This is especially useful when presenting possible timezone choices for user selection, 
 | 
| + *         This is especially useful when presenting possible timezone choices for user selection,
 | 
|   *         since the naming is more uniform than the "v" format.</td>
 | 
|   *     </tr>
 | 
|   *     <tr>
 | 
| @@ -651,7 +653,7 @@ class SimpleDateFormatMutableNFs;
 | 
|   *         = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz", success );
 | 
|   *     GregorianCalendar cal(success);
 | 
|   *     UDate currentTime_1 = cal.getTime(success);
 | 
| - *     FieldPosition fp(0);
 | 
| + *     FieldPosition fp(FieldPosition::DONT_CARE);
 | 
|   *     UnicodeString dateString;
 | 
|   *     formatter->format( currentTime_1, dateString, fp );
 | 
|   *     cout << "result: " << dateString << endl;
 | 
| @@ -999,6 +1001,12 @@ public:
 | 
|       * (Presumably, letters that would be more mnemonic in that locale's
 | 
|       * language.)  This function would produce a pattern using those
 | 
|       * letters.
 | 
| +     * <p>
 | 
| +     * <b>Note:</b> This implementation depends on DateFormatSymbols::getLocalPatternChars()
 | 
| +     * to get localized format pattern characters. ICU does not include
 | 
| +     * localized pattern character data, therefore, unless user sets localized
 | 
| +     * pattern characters manually, this method returns the same result as
 | 
| +     * toPattern().
 | 
|       *
 | 
|       * @param result    Receives the localized pattern.
 | 
|       * @param status    Output param set to success/failure code on
 | 
| @@ -1126,15 +1134,15 @@ public:
 | 
|       * @param value The UDisplayContext value to set.
 | 
|       * @param status Input/output status. If at entry this indicates a failure
 | 
|       *               status, the function will do nothing; otherwise this will be
 | 
| -     *               updated with any new status from the function. 
 | 
| +     *               updated with any new status from the function.
 | 
|       * @stable ICU 53
 | 
|       */
 | 
|      virtual void setContext(UDisplayContext value, UErrorCode& status);
 | 
| -    
 | 
| +
 | 
|      /**
 | 
|       * Overrides base class method and
 | 
| -     * This method clears per field NumberFormat instances 
 | 
| -     * previously set by {@see adoptNumberFormat(const UnicodeString&, NumberFormat*, UErrorCode)} 
 | 
| +     * This method clears per field NumberFormat instances
 | 
| +     * previously set by {@see adoptNumberFormat(const UnicodeString&, NumberFormat*, UErrorCode)}
 | 
|       * @param adoptNF the NumbeferFormat used
 | 
|       * @stable ICU 54
 | 
|       */
 | 
| @@ -1144,7 +1152,7 @@ public:
 | 
|       * Allow the user to set the NumberFormat for several fields
 | 
|       * It can be a single field like: "y"(year) or "M"(month)
 | 
|       * It can be several field combined together: "yM"(year and month)
 | 
| -     * Note: 
 | 
| +     * Note:
 | 
|       * 1 symbol field is enough for multiple symbol field (so "y" will override "yy", "yyy")
 | 
|       * If the field is not numeric, then override has no effect (like "MMM" will use abbreviation, not numerical field)
 | 
|       * Per field NumberFormat can also be cleared in {@see DateFormat::setNumberFormat(const NumberFormat& newNumberFormat)}
 | 
| @@ -1269,7 +1277,7 @@ private:
 | 
|       * having a number of digits between "minDigits" and
 | 
|       * "maxDigits".  Uses the DateFormat's NumberFormat.
 | 
|       *
 | 
| -     * @param currentNumberFormat 
 | 
| +     * @param currentNumberFormat
 | 
|       * @param appendTo  Output parameter to receive result.
 | 
|       *                  Formatted number is appended to existing contents.
 | 
|       * @param value     Value to format.
 | 
| @@ -1357,7 +1365,14 @@ private:
 | 
|       */
 | 
|      int32_t matchQuarterString(const UnicodeString& text, int32_t start, UCalendarDateFields field,
 | 
|                                 const UnicodeString* stringArray, int32_t stringArrayCount, Calendar& cal) const;
 | 
| -    
 | 
| +
 | 
| +    /**
 | 
| +     * Used by subParse() to match localized day period strings.
 | 
| +     */
 | 
| +    int32_t matchDayPeriodStrings(const UnicodeString& text, int32_t start,
 | 
| +                                  const UnicodeString* stringArray, int32_t stringArrayCount,
 | 
| +                                  int32_t &dayPeriod) const;
 | 
| +
 | 
|      /**
 | 
|       * Private function used by subParse to match literal pattern text.
 | 
|       *
 | 
| @@ -1374,9 +1389,9 @@ private:
 | 
|       * @return <code>TRUE</code> if the literal text could be matched, <code>FALSE</code> otherwise.
 | 
|       */
 | 
|      static UBool matchLiterals(const UnicodeString &pattern, int32_t &patternOffset,
 | 
| -                               const UnicodeString &text, int32_t &textOffset, 
 | 
| +                               const UnicodeString &text, int32_t &textOffset,
 | 
|                                 UBool whitespaceLenient, UBool partialMatchLenient, UBool oldLeniency);
 | 
| -    
 | 
| +
 | 
|      /**
 | 
|       * Private member function that converts the parsed date strings into
 | 
|       * timeFields. Returns -start (for ParsePosition) if failed.
 | 
| @@ -1399,7 +1414,8 @@ private:
 | 
|       */
 | 
|      int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
 | 
|                       UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], int32_t& saveHebrewMonth, Calendar& cal,
 | 
| -                     int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType, SimpleDateFormatMutableNFs &mutableNFs) const;
 | 
| +                     int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType, SimpleDateFormatMutableNFs &mutableNFs,
 | 
| +                     int32_t *dayPeriod=NULL) const;
 | 
|  
 | 
|      void parseInt(const UnicodeString& text,
 | 
|                    Formattable& number,
 | 
| @@ -1556,6 +1572,14 @@ private:
 | 
|       */
 | 
|      UDate                fDefaultCenturyStart;
 | 
|  
 | 
| +    UBool                fHasMinute;
 | 
| +    UBool                fHasSecond;
 | 
| +
 | 
| +    /**
 | 
| +     * Sets fHasMinutes and fHasSeconds.
 | 
| +     */
 | 
| +    void                 parsePattern();
 | 
| +
 | 
|      /**
 | 
|       * See documentation for defaultCenturyStart.
 | 
|       */
 | 
| 
 |