13 #ifndef __DTITVFMT_H__
14 #define __DTITVFMT_H__
19 #if U_SHOW_CPLUSPLUS_API
26 #if !UCONFIG_NO_FORMATTING
38 class FormattedDateIntervalData;
39 class DateIntervalFormat;
41 #ifndef U_HIDE_DRAFT_API
59 class U_I18N_API FormattedDateInterval :
public UMemory,
public FormattedValue {
71 FormattedDateInterval(FormattedDateInterval&& src)
U_NOEXCEPT;
80 FormattedDateInterval(const FormattedDateInterval&) = delete;
83 FormattedDateInterval& operator=(const FormattedDateInterval&) = delete;
89 FormattedDateInterval& operator=(FormattedDateInterval&& src)
U_NOEXCEPT;
104 FormattedDateIntervalData *fData;
106 explicit FormattedDateInterval(FormattedDateIntervalData *results)
108 explicit FormattedDateInterval(
UErrorCode errorCode)
109 : fData(nullptr), fErrorCode(errorCode) {}
110 friend class DateIntervalFormat;
300 class U_I18N_API DateIntervalFormat :
public Format {
316 static DateIntervalFormat* U_EXPORT2 createInstance(
317 const UnicodeString& skeleton,
354 static DateIntervalFormat* U_EXPORT2 createInstance(
355 const UnicodeString& skeleton,
356 const Locale& locale,
374 static DateIntervalFormat* U_EXPORT2 createInstance(
375 const UnicodeString& skeleton,
376 const DateIntervalInfo& dtitvinf,
419 static DateIntervalFormat* U_EXPORT2 createInstance(
420 const UnicodeString& skeleton,
421 const Locale& locale,
422 const DateIntervalInfo& dtitvinf,
429 virtual ~DateIntervalFormat();
437 virtual DateIntervalFormat* clone()
const;
458 using Format::format;
479 virtual UnicodeString& format(
const Formattable& obj,
480 UnicodeString& appendTo,
481 FieldPosition& fieldPosition,
501 UnicodeString& format(
const DateInterval* dtInterval,
502 UnicodeString& appendTo,
503 FieldPosition& fieldPosition,
506 #ifndef U_HIDE_DRAFT_API
517 FormattedDateInterval formatToValue(
518 const DateInterval& dtInterval,
545 UnicodeString& format(Calendar& fromCalendar,
546 Calendar& toCalendar,
547 UnicodeString& appendTo,
548 FieldPosition& fieldPosition,
551 #ifndef U_HIDE_DRAFT_API
568 FormattedDateInterval formatToValue(
569 Calendar& fromCalendar,
570 Calendar& toCalendar,
600 virtual void parseObject(
const UnicodeString& source,
602 ParsePosition& parse_pos)
const;
611 const DateIntervalInfo* getDateIntervalInfo(
void)
const;
620 void setDateIntervalInfo(
const DateIntervalInfo& newIntervalPatterns,
635 const DateFormat* getDateFormat(
void)
const;
642 virtual const TimeZone& getTimeZone(
void)
const;
650 virtual void adoptTimeZone(TimeZone* zoneToAdopt);
657 virtual void setTimeZone(
const TimeZone& zone);
670 static UClassID U_EXPORT2 getStaticClassID(
void);
683 virtual UClassID getDynamicClassID(
void)
const;
691 DateIntervalFormat(
const DateIntervalFormat&);
697 DateIntervalFormat& operator=(
const DateIntervalFormat&);
715 UnicodeString firstPart;
716 UnicodeString secondPart;
730 UBool laterDateFirst;
738 DateIntervalFormat();
758 DateIntervalFormat(
const Locale& locale, DateIntervalInfo* dtItvInfo,
759 const UnicodeString* skeleton,
UErrorCode& status);
774 static DateIntervalFormat* U_EXPORT2 create(
const Locale& locale,
775 DateIntervalInfo* dtitvinf,
776 const UnicodeString* skeleton,
784 void fallbackFormatRange(
785 Calendar& fromCalendar,
786 Calendar& toCalendar,
787 UnicodeString& appendTo,
789 FieldPositionHandler& fphandler,
814 UnicodeString& fallbackFormat(Calendar& fromCalendar,
815 Calendar& toCalendar,
816 UBool fromToOnSameDay,
817 UnicodeString& appendTo,
819 FieldPositionHandler& fphandler,
870 const UnicodeString& skeleton,
899 static void U_EXPORT2 getDateTimeSkeleton(
const UnicodeString& skeleton,
901 UnicodeString& normalizedDate,
903 UnicodeString& normalizedTime);
930 UBool setSeparateDateTimePtn(
const UnicodeString& dateSkeleton,
931 const UnicodeString& timeSkeleton);
960 const UnicodeString* skeleton,
961 const UnicodeString* bestSkeleton,
962 int8_t differenceInfo,
963 UnicodeString* extendedSkeleton =
NULL,
964 UnicodeString* extendedBestSkeleton =
NULL);
994 static void U_EXPORT2 adjustFieldWidth(
995 const UnicodeString& inputSkeleton,
996 const UnicodeString& bestMatchSkeleton,
997 const UnicodeString& bestMatchIntervalPattern,
998 int8_t differenceInfo,
999 UnicodeString& adjustedIntervalPattern);
1012 void concatSingleDate2TimeInterval(UnicodeString& format,
1013 const UnicodeString& datePattern,
1024 const UnicodeString& skeleton);
1032 static int32_t U_EXPORT2 splitPatternInto2Part(
const UnicodeString& intervalPattern);
1041 const UnicodeString& intervalPattern);
1051 const UnicodeString& intervalPattern,
1052 UBool laterDateFirst);
1065 const UnicodeString* firstPart,
1066 const UnicodeString* secondPart,
1067 UBool laterDateFirst);
1094 UnicodeString& formatImpl(Calendar& fromCalendar,
1095 Calendar& toCalendar,
1096 UnicodeString& appendTo,
1098 FieldPositionHandler& fphandler,
1102 UnicodeString& formatIntervalImpl(
const DateInterval& dtInterval,
1103 UnicodeString& appendTo,
1105 FieldPositionHandler& fphandler,
1110 static const char16_t fgCalendarFieldToPatternLetter[];
1116 DateIntervalInfo* fInfo;
1121 SimpleDateFormat* fDateFormat;
1128 Calendar* fFromCalendar;
1129 Calendar* fToCalendar;
1136 UnicodeString fSkeleton;
1137 PatternInfo fIntervalPatterns[DateIntervalInfo::kIPI_MAX_INDEX];
1142 UnicodeString* fDatePattern;
1143 UnicodeString* fTimePattern;
1144 UnicodeString* fDateTimeFormat;
1158 #endif // _DTITVFMT_H__