ICU 57.1 57.1
dtitvfmt.h
Go to the documentation of this file.
1/********************************************************************************
2* Copyright (C) 2008-2016, International Business Machines Corporation and
3* others. All Rights Reserved.
4*******************************************************************************
5*
6* File DTITVFMT.H
7*
8*******************************************************************************
9*/
10
11#ifndef __DTITVFMT_H__
12#define __DTITVFMT_H__
13
14
15#include "unicode/utypes.h"
16
22#if !UCONFIG_NO_FORMATTING
23
24#include "unicode/ucal.h"
25#include "unicode/smpdtfmt.h"
26#include "unicode/dtintrv.h"
27#include "unicode/dtitvinf.h"
28#include "unicode/dtptngen.h"
29
31
32
33
221public:
222
237 const UnicodeString& skeleton,
238 UErrorCode& status);
239
275 const UnicodeString& skeleton,
276 const Locale& locale,
277 UErrorCode& status);
278
295 const UnicodeString& skeleton,
296 const DateIntervalInfo& dtitvinf,
297 UErrorCode& status);
298
340 const UnicodeString& skeleton,
341 const Locale& locale,
342 const DateIntervalInfo& dtitvinf,
343 UErrorCode& status);
344
350
357 virtual Format* clone(void) const;
358
366 virtual UBool operator==(const Format& other) const;
367
375 UBool operator!=(const Format& other) const;
376
377
378 using Format::format;
379
399 virtual UnicodeString& format(const Formattable& obj,
400 UnicodeString& appendTo,
401 FieldPosition& fieldPosition,
402 UErrorCode& status) const ;
403
404
405
422 UnicodeString& appendTo,
423 FieldPosition& fieldPosition,
424 UErrorCode& status) const ;
425
426
451 Calendar& toCalendar,
452 UnicodeString& appendTo,
453 FieldPosition& fieldPosition,
454 UErrorCode& status) const ;
455
482 virtual void parseObject(const UnicodeString& source,
483 Formattable& result,
484 ParsePosition& parse_pos) const;
485
486
494
495
502 void setDateIntervalInfo(const DateIntervalInfo& newIntervalPatterns,
503 UErrorCode& status);
504
505
517 const DateFormat* getDateFormat(void) const;
518
524 virtual const TimeZone& getTimeZone(void) const;
525
532 virtual void adoptTimeZone(TimeZone* zoneToAdopt);
533
539 virtual void setTimeZone(const TimeZone& zone);
540
552 static UClassID U_EXPORT2 getStaticClassID(void);
553
565 virtual UClassID getDynamicClassID(void) const;
566
567protected:
568
574
580
581private:
582
583 /*
584 * This is for ICU internal use only. Please do not use.
585 * Save the interval pattern information.
586 * Interval pattern consists of 2 single date patterns and the separator.
587 * For example, interval pattern "MMM d - MMM d, yyyy" consists
588 * a single date pattern "MMM d", another single date pattern "MMM d, yyyy",
589 * and a separator "-".
590 * The pattern is divided into 2 parts. For above example,
591 * the first part is "MMM d - ", and the second part is "MMM d, yyyy".
592 * Also, the first date appears in an interval pattern could be
593 * the earlier date or the later date.
594 * And such information is saved in the interval pattern as well.
595 */
596 struct PatternInfo {
597 UnicodeString firstPart;
598 UnicodeString secondPart;
612 UBool laterDateFirst;
613 };
614
615
621
640 DateIntervalFormat(const Locale& locale, DateIntervalInfo* dtItvInfo,
641 const UnicodeString* skeleton, UErrorCode& status);
642
643
656 static DateIntervalFormat* U_EXPORT2 create(const Locale& locale,
657 DateIntervalInfo* dtitvinf,
658 const UnicodeString* skeleton,
659 UErrorCode& status);
660
681 static void
682 adjustPosition(UnicodeString& combiningPattern, // has {0} and {1} in it
683 UnicodeString& pat0, FieldPosition& pos0, // pattern and pos corresponding to {0}
684 UnicodeString& pat1, FieldPosition& pos1, // pattern and pos corresponding to {1}
685 FieldPosition& posResult);
686
687
710 UnicodeString& fallbackFormat(Calendar& fromCalendar,
711 Calendar& toCalendar,
712 UBool fromToOnSameDay,
713 UnicodeString& appendTo,
714 FieldPosition& pos,
715 UErrorCode& status) const;
716
717
718
753 void initializePattern(UErrorCode& status);
754
755
756
764 void setFallbackPattern(UCalendarDateFields field,
765 const UnicodeString& skeleton,
766 UErrorCode& status);
767
768
769
794 static void U_EXPORT2 getDateTimeSkeleton(const UnicodeString& skeleton,
795 UnicodeString& date,
796 UnicodeString& normalizedDate,
797 UnicodeString& time,
798 UnicodeString& normalizedTime);
799
800
801
825 UBool setSeparateDateTimePtn(const UnicodeString& dateSkeleton,
826 const UnicodeString& timeSkeleton);
827
828
829
830
854 UBool setIntervalPattern(UCalendarDateFields field,
855 const UnicodeString* skeleton,
856 const UnicodeString* bestSkeleton,
857 int8_t differenceInfo,
858 UnicodeString* extendedSkeleton = NULL,
859 UnicodeString* extendedBestSkeleton = NULL);
860
889 static void U_EXPORT2 adjustFieldWidth(
890 const UnicodeString& inputSkeleton,
891 const UnicodeString& bestMatchSkeleton,
892 const UnicodeString& bestMatchIntervalPattern,
893 int8_t differenceInfo,
894 UnicodeString& adjustedIntervalPattern);
895
907 void concatSingleDate2TimeInterval(UnicodeString& format,
908 const UnicodeString& datePattern,
910 UErrorCode& status);
911
918 static UBool U_EXPORT2 fieldExistsInSkeleton(UCalendarDateFields field,
919 const UnicodeString& skeleton);
920
921
927 static int32_t U_EXPORT2 splitPatternInto2Part(const UnicodeString& intervalPattern);
928
929
935 void setIntervalPattern(UCalendarDateFields field,
936 const UnicodeString& intervalPattern);
937
938
945 void setIntervalPattern(UCalendarDateFields field,
946 const UnicodeString& intervalPattern,
947 UBool laterDateFirst);
948
949
959 void setPatternInfo(UCalendarDateFields field,
960 const UnicodeString* firstPart,
961 const UnicodeString* secondPart,
962 UBool laterDateFirst);
963
989 UnicodeString& formatImpl(Calendar& fromCalendar,
990 Calendar& toCalendar,
991 UnicodeString& appendTo,
992 FieldPosition& fieldPosition,
993 UErrorCode& status) const ;
994
995
996 // from calendar field to pattern letter
997 static const UChar fgCalendarFieldToPatternLetter[];
998
999
1003 DateIntervalInfo* fInfo;
1004
1008 SimpleDateFormat* fDateFormat;
1009
1015 Calendar* fFromCalendar;
1016 Calendar* fToCalendar;
1017
1018 Locale fLocale;
1019
1023 UnicodeString fSkeleton;
1024 PatternInfo fIntervalPatterns[DateIntervalInfo::kIPI_MAX_INDEX];
1025
1029 UnicodeString* fDatePattern;
1030 UnicodeString* fTimePattern;
1031 UnicodeString* fDateTimeFormat;
1032};
1033
1034inline UBool
1036 return !operator==(other);
1037}
1038
1040
1041#endif /* #if !UCONFIG_NO_FORMATTING */
1042
1043#endif // _DTITVFMT_H__
1044//eof
Calendar is an abstract base class for converting between a UDate object and a set of integer fields ...
Definition: calendar.h:200
DateFormat is an abstract class for a family of classes that convert dates and times from their inter...
Definition: datefmt.h:147
DateIntervalFormat is a class for formatting and parsing date intervals in a language-independent man...
Definition: dtitvfmt.h:220
virtual UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const
Format an object to produce a string.
UBool operator!=(const Format &other) const
Return true if the given Format objects are not semantically equal.
Definition: dtitvfmt.h:1035
virtual UBool operator==(const Format &other) const
Return true if the given Format objects are semantically equal.
virtual void adoptTimeZone(TimeZone *zoneToAdopt)
Sets the time zone for the calendar used by this DateIntervalFormat object.
virtual UClassID getDynamicClassID(void) const
Returns a unique class ID POLYMORPHICALLY.
static DateIntervalFormat * createInstance(const UnicodeString &skeleton, const DateIntervalInfo &dtitvinf, UErrorCode &status)
Construct a DateIntervalFormat from skeleton DateIntervalInfo, and default locale.
static DateIntervalFormat * createInstance(const UnicodeString &skeleton, const Locale &locale, UErrorCode &status)
Construct a DateIntervalFormat from skeleton and a given locale.
static DateIntervalFormat * createInstance(const UnicodeString &skeleton, const Locale &locale, const DateIntervalInfo &dtitvinf, UErrorCode &status)
Construct a DateIntervalFormat from skeleton a DateIntervalInfo, and the given locale.
DateIntervalFormat & operator=(const DateIntervalFormat &)
Assignment operator.
virtual void parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const
Date interval parsing is not supported.
virtual Format * clone(void) const
Clone this Format object polymorphically.
UnicodeString & format(Calendar &fromCalendar, Calendar &toCalendar, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const
Format 2 Calendars to produce a string.
virtual void setTimeZone(const TimeZone &zone)
Sets the time zone for the calendar used by this DateIntervalFormat object.
virtual ~DateIntervalFormat()
Destructor.
static UClassID getStaticClassID(void)
Return the class ID for this class.
virtual const TimeZone & getTimeZone(void) const
Returns a reference to the TimeZone used by this DateIntervalFormat's calendar.
UnicodeString & format(const DateInterval *dtInterval, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const
Format a DateInterval to produce a string.
const DateFormat * getDateFormat(void) const
Gets the date formatter.
static DateIntervalFormat * createInstance(const UnicodeString &skeleton, UErrorCode &status)
Construct a DateIntervalFormat from skeleton and the default locale.
void setDateIntervalInfo(const DateIntervalInfo &newIntervalPatterns, UErrorCode &status)
Set the date time interval patterns.
const DateIntervalInfo * getDateIntervalInfo(void) const
Gets the date time interval patterns.
DateIntervalFormat(const DateIntervalFormat &)
Copy constructor.
DateIntervalInfo is a public class for encapsulating localizable date time interval patterns.
Definition: dtitvinf.h:151
This class represents a date interval.
Definition: dtintrv.h:32
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
Definition: fieldpos.h:106
Base class for all formats.
Definition: format.h:94
UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const
Formats an object to produce a string.
UBool operator!=(const Format &other) const
Return true if the given Format objects are not semantically equal.
Definition: format.h:119
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition: fmtable.h:66
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Definition: parsepos.h:47
SimpleDateFormat is a concrete class for formatting and parsing dates in a language-independent manne...
Definition: smpdtfmt.h:717
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:129
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
C++ API: Date Interval data type.
C++ API: Date/Time interval patterns for formatting date/time interval.
C++ API: Date/Time Pattern Generator.
C++ API: Format and parse dates in a language-independent manner.
C API: Calendar.
UCalendarDateFields
Possible fields in a UCalendar.
Definition: ucal.h:183
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition: umachine.h:312
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
Basic definitions for ICU, for both C and C++ APIs.
#define NULL
Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
Definition: utypes.h:186
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:476
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:358
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129