+#ifndef U_HIDE_INTERNAL_API
+ /**
+ * This default time separator is used for formatting when the locale
+ * doesn't specify any time separator, and always recognized when parsing.
+ * @internal
+ */
+ static const char16_t DEFAULT_TIME_SEPARATOR = 0x003a; // ':'
+
+ /**
+ * This alternate time separator is always recognized when parsing.
+ * @internal
+ */
+ static const char16_t ALTERNATE_TIME_SEPARATOR = 0x002e; // '.'
+
+ /**
+ * Gets the time separator string. For example: ":".
+ * @param result Output param which will receive the time separator string.
+ * @return A reference to 'result'.
+ * @internal
+ */
+ UnicodeString& getTimeSeparatorString(UnicodeString& result) const;
+
+ /**
+ * Sets the time separator string. For example: ":".
+ * @param newTimeSeparator the new time separator string.
+ * @internal
+ */
+ void setTimeSeparatorString(const UnicodeString& newTimeSeparator);
+#endif /* U_HIDE_INTERNAL_API */
+
+ /**
+ * Gets cyclic year name strings if the calendar has them, by width and context.
+ * For example: "jia-zi", "yi-chou", etc.
+ * @param count Filled in with length of the array.
+ * @param context The usage context: FORMAT, STANDALONE.
+ * @param width The requested name width: WIDE, ABBREVIATED, NARROW.
+ * @return The year name strings (DateFormatSymbols retains ownership),
+ * or null if they are not available for this calendar.
+ * @stable ICU 54
+ */
+ const UnicodeString* getYearNames(int32_t& count,
+ DtContextType context, DtWidthType width) const;
+
+ /**
+ * Sets cyclic year name strings by width and context. For example: "jia-zi", "yi-chou", etc.
+ *
+ * @param yearNames The new cyclic year name strings (not adopted; caller retains ownership).
+ * @param count The length of the array.
+ * @param context The usage context: FORMAT, STANDALONE (currently only FORMAT is supported).
+ * @param width The name width: WIDE, ABBREVIATED, NARROW (currently only ABBREVIATED is supported).
+ * @stable ICU 54
+ */
+ void setYearNames(const UnicodeString* yearNames, int32_t count,
+ DtContextType context, DtWidthType width);
+
+ /**
+ * Gets calendar zodiac name strings if the calendar has them, by width and context.
+ * For example: "Rat", "Ox", "Tiger", etc.
+ * @param count Filled in with length of the array.
+ * @param context The usage context: FORMAT, STANDALONE.
+ * @param width The requested name width: WIDE, ABBREVIATED, NARROW.
+ * @return The zodiac name strings (DateFormatSymbols retains ownership),
+ * or null if they are not available for this calendar.
+ * @stable ICU 54
+ */
+ const UnicodeString* getZodiacNames(int32_t& count,
+ DtContextType context, DtWidthType width) const;
+
+ /**
+ * Sets calendar zodiac name strings by width and context. For example: "Rat", "Ox", "Tiger", etc.
+ *
+ * @param zodiacNames The new zodiac name strings (not adopted; caller retains ownership).
+ * @param count The length of the array.
+ * @param context The usage context: FORMAT, STANDALONE (currently only FORMAT is supported).
+ * @param width The name width: WIDE, ABBREVIATED, NARROW (currently only ABBREVIATED is supported).
+ * @stable ICU 54
+ */
+ void setZodiacNames(const UnicodeString* zodiacNames, int32_t count,
+ DtContextType context, DtWidthType width);
+
+#ifndef U_HIDE_INTERNAL_API
+ /**
+ * Somewhat temporary constants for leap month pattern types, adequate for supporting
+ * just leap month patterns as needed for Chinese lunar calendar.
+ * Eventually we will add full support for different month pattern types (needed for
+ * other calendars such as Hindu) at which point this approach will be replaced by a
+ * more complete approach.
+ * @internal
+ */
+ enum EMonthPatternType
+ {
+ kLeapMonthPatternFormatWide,
+ kLeapMonthPatternFormatAbbrev,
+ kLeapMonthPatternFormatNarrow,
+ kLeapMonthPatternStandaloneWide,
+ kLeapMonthPatternStandaloneAbbrev,
+ kLeapMonthPatternStandaloneNarrow,
+ kLeapMonthPatternNumeric,
+ kMonthPatternsCount
+ };
+
+ /**
+ * Somewhat temporary function for getting complete set of leap month patterns for all
+ * contexts & widths, indexed by EMonthPatternType values. Returns NULL if calendar
+ * does not have leap month patterns. Note, there is currently no setter for this.
+ * Eventually we will add full support for different month pattern types (needed for
+ * other calendars such as Hindu) at which point this approach will be replaced by a
+ * more complete approach.
+ * @param count Filled in with length of the array (may be 0).
+ * @return The leap month patterns (DateFormatSymbols retains ownership).
+ * May be NULL if there are no leap month patterns for this calendar.
+ * @internal
+ */
+ const UnicodeString* getLeapMonthPatterns(int32_t& count) const;
+
+#endif /* U_HIDE_INTERNAL_API */
+
+#ifndef U_HIDE_DEPRECATED_API