13 #ifndef __DTITVFMT_H__
14 #define __DTITVFMT_H__
24 #if !UCONFIG_NO_FORMATTING
222 class U_I18N_API DateIntervalFormat :
public Format {
238 static DateIntervalFormat* U_EXPORT2 createInstance(
239 const UnicodeString& skeleton,
276 static DateIntervalFormat* U_EXPORT2 createInstance(
277 const UnicodeString& skeleton,
278 const Locale& locale,
296 static DateIntervalFormat* U_EXPORT2 createInstance(
297 const UnicodeString& skeleton,
298 const DateIntervalInfo& dtitvinf,
341 static DateIntervalFormat* U_EXPORT2 createInstance(
342 const UnicodeString& skeleton,
343 const Locale& locale,
344 const DateIntervalInfo& dtitvinf,
351 virtual ~DateIntervalFormat();
359 virtual Format* clone(
void)
const;
380 using Format::format;
401 virtual UnicodeString& format(
const Formattable& obj,
402 UnicodeString& appendTo,
403 FieldPosition& fieldPosition,
423 UnicodeString& format(
const DateInterval* dtInterval,
424 UnicodeString& appendTo,
425 FieldPosition& fieldPosition,
452 UnicodeString& format(Calendar& fromCalendar,
453 Calendar& toCalendar,
454 UnicodeString& appendTo,
455 FieldPosition& fieldPosition,
484 virtual void parseObject(
const UnicodeString& source,
486 ParsePosition& parse_pos)
const;
495 const DateIntervalInfo* getDateIntervalInfo(
void)
const;
504 void setDateIntervalInfo(
const DateIntervalInfo& newIntervalPatterns,
519 const DateFormat* getDateFormat(
void)
const;
526 virtual const TimeZone& getTimeZone(
void)
const;
534 virtual void adoptTimeZone(TimeZone* zoneToAdopt);
541 virtual void setTimeZone(
const TimeZone& zone);
554 static UClassID U_EXPORT2 getStaticClassID(
void);
567 virtual UClassID getDynamicClassID(
void)
const;
575 DateIntervalFormat(
const DateIntervalFormat&);
581 DateIntervalFormat& operator=(
const DateIntervalFormat&);
599 UnicodeString firstPart;
600 UnicodeString secondPart;
614 UBool laterDateFirst;
622 DateIntervalFormat();
642 DateIntervalFormat(
const Locale& locale, DateIntervalInfo* dtItvInfo,
643 const UnicodeString* skeleton,
UErrorCode& status);
658 static DateIntervalFormat* U_EXPORT2 create(
const Locale& locale,
659 DateIntervalInfo* dtitvinf,
660 const UnicodeString* skeleton,
684 adjustPosition(UnicodeString& combiningPattern,
685 UnicodeString& pat0, FieldPosition& pos0,
686 UnicodeString& pat1, FieldPosition& pos1,
687 FieldPosition& posResult);
712 UnicodeString& fallbackFormat(Calendar& fromCalendar,
713 Calendar& toCalendar,
714 UBool fromToOnSameDay,
715 UnicodeString& appendTo,
767 const UnicodeString& skeleton,
796 static void U_EXPORT2 getDateTimeSkeleton(
const UnicodeString& skeleton,
798 UnicodeString& normalizedDate,
800 UnicodeString& normalizedTime);
827 UBool setSeparateDateTimePtn(
const UnicodeString& dateSkeleton,
828 const UnicodeString& timeSkeleton);
857 const UnicodeString* skeleton,
858 const UnicodeString* bestSkeleton,
859 int8_t differenceInfo,
860 UnicodeString* extendedSkeleton =
NULL,
861 UnicodeString* extendedBestSkeleton =
NULL);
891 static void U_EXPORT2 adjustFieldWidth(
892 const UnicodeString& inputSkeleton,
893 const UnicodeString& bestMatchSkeleton,
894 const UnicodeString& bestMatchIntervalPattern,
895 int8_t differenceInfo,
896 UnicodeString& adjustedIntervalPattern);
909 void concatSingleDate2TimeInterval(UnicodeString& format,
910 const UnicodeString& datePattern,
921 const UnicodeString& skeleton);
929 static int32_t U_EXPORT2 splitPatternInto2Part(
const UnicodeString& intervalPattern);
938 const UnicodeString& intervalPattern);
948 const UnicodeString& intervalPattern,
949 UBool laterDateFirst);
962 const UnicodeString* firstPart,
963 const UnicodeString* secondPart,
964 UBool laterDateFirst);
991 UnicodeString& formatImpl(Calendar& fromCalendar,
992 Calendar& toCalendar,
993 UnicodeString& appendTo,
994 FieldPosition& fieldPosition,
999 static const char16_t fgCalendarFieldToPatternLetter[];
1005 DateIntervalInfo* fInfo;
1010 SimpleDateFormat* fDateFormat;
1017 Calendar* fFromCalendar;
1018 Calendar* fToCalendar;
1025 UnicodeString fSkeleton;
1026 PatternInfo fIntervalPatterns[DateIntervalInfo::kIPI_MAX_INDEX];
1031 UnicodeString* fDatePattern;
1032 UnicodeString* fTimePattern;
1033 UnicodeString* fDateTimeFormat;
1045 #endif // _DTITVFMT_H__