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. |
*/ |