ICU 55.1  55.1
dtitvfmt.h
Go to the documentation of this file.
1 /********************************************************************************
2 * Copyright (C) 2008-2013, 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 
219 public:
220 
234  static DateIntervalFormat* U_EXPORT2 createInstance(
235  const UnicodeString& skeleton,
236  UErrorCode& status);
237 
272  static DateIntervalFormat* U_EXPORT2 createInstance(
273  const UnicodeString& skeleton,
274  const Locale& locale,
275  UErrorCode& status);
276 
292  static DateIntervalFormat* U_EXPORT2 createInstance(
293  const UnicodeString& skeleton,
294  const DateIntervalInfo& dtitvinf,
295  UErrorCode& status);
296 
337  static DateIntervalFormat* U_EXPORT2 createInstance(
338  const UnicodeString& skeleton,
339  const Locale& locale,
340  const DateIntervalInfo& dtitvinf,
341  UErrorCode& status);
342 
347  virtual ~DateIntervalFormat();
348 
355  virtual Format* clone(void) const;
356 
364  virtual UBool operator==(const Format& other) const;
365 
373  UBool operator!=(const Format& other) const;
374 
375 
376  using Format::format;
377 
394  virtual UnicodeString& format(const Formattable& obj,
395  UnicodeString& appendTo,
396  FieldPosition& fieldPosition,
397  UErrorCode& status) const ;
398 
399 
400 
413  UnicodeString& format(const DateInterval* dtInterval,
414  UnicodeString& appendTo,
415  FieldPosition& fieldPosition,
416  UErrorCode& status) const ;
417 
418 
439  UnicodeString& format(Calendar& fromCalendar,
440  Calendar& toCalendar,
441  UnicodeString& appendTo,
442  FieldPosition& fieldPosition,
443  UErrorCode& status) const ;
444 
471  virtual void parseObject(const UnicodeString& source,
472  Formattable& result,
473  ParsePosition& parse_pos) const;
474 
475 
482  const DateIntervalInfo* getDateIntervalInfo(void) const;
483 
484 
491  void setDateIntervalInfo(const DateIntervalInfo& newIntervalPatterns,
492  UErrorCode& status);
493 
494 
500  const DateFormat* getDateFormat(void) const;
501 
507  virtual const TimeZone& getTimeZone(void) const;
508 
515  virtual void adoptTimeZone(TimeZone* zoneToAdopt);
516 
522  virtual void setTimeZone(const TimeZone& zone);
523 
535  static UClassID U_EXPORT2 getStaticClassID(void);
536 
548  virtual UClassID getDynamicClassID(void) const;
549 
550 protected:
551 
557 
563 
564 private:
565 
566  /*
567  * This is for ICU internal use only. Please do not use.
568  * Save the interval pattern information.
569  * Interval pattern consists of 2 single date patterns and the separator.
570  * For example, interval pattern "MMM d - MMM d, yyyy" consists
571  * a single date pattern "MMM d", another single date pattern "MMM d, yyyy",
572  * and a separator "-".
573  * The pattern is divided into 2 parts. For above example,
574  * the first part is "MMM d - ", and the second part is "MMM d, yyyy".
575  * Also, the first date appears in an interval pattern could be
576  * the earlier date or the later date.
577  * And such information is saved in the interval pattern as well.
578  */
579  struct PatternInfo {
580  UnicodeString firstPart;
581  UnicodeString secondPart;
595  UBool laterDateFirst;
596  };
597 
598 
604 
623  DateIntervalFormat(const Locale& locale, DateIntervalInfo* dtItvInfo,
624  const UnicodeString* skeleton, UErrorCode& status);
625 
626 
639  static DateIntervalFormat* U_EXPORT2 create(const Locale& locale,
640  DateIntervalInfo* dtitvinf,
641  const UnicodeString* skeleton,
642  UErrorCode& status);
643 
656  static SimpleDateFormat* U_EXPORT2 createSDFPatternInstance(
657  const UnicodeString& skeleton,
658  const Locale& locale,
660  UErrorCode& status);
661 
662 
685  UnicodeString& fallbackFormat(Calendar& fromCalendar,
686  Calendar& toCalendar,
687  UnicodeString& appendTo,
688  FieldPosition& pos,
689  UErrorCode& status) const;
690 
691 
692 
727  void initializePattern(UErrorCode& status);
728 
729 
730 
738  void setFallbackPattern(UCalendarDateFields field,
739  const UnicodeString& skeleton,
740  UErrorCode& status);
741 
742 
743 
768  static void U_EXPORT2 getDateTimeSkeleton(const UnicodeString& skeleton,
769  UnicodeString& date,
770  UnicodeString& normalizedDate,
771  UnicodeString& time,
772  UnicodeString& normalizedTime);
773 
774 
775 
799  UBool setSeparateDateTimePtn(const UnicodeString& dateSkeleton,
800  const UnicodeString& timeSkeleton);
801 
802 
803 
804 
828  UBool setIntervalPattern(UCalendarDateFields field,
829  const UnicodeString* skeleton,
830  const UnicodeString* bestSkeleton,
831  int8_t differenceInfo,
832  UnicodeString* extendedSkeleton = NULL,
833  UnicodeString* extendedBestSkeleton = NULL);
834 
863  static void U_EXPORT2 adjustFieldWidth(
864  const UnicodeString& inputSkeleton,
865  const UnicodeString& bestMatchSkeleton,
866  const UnicodeString& bestMatchIntervalPattern,
867  int8_t differenceInfo,
868  UnicodeString& adjustedIntervalPattern);
869 
882  void concatSingleDate2TimeInterval(const UChar* format,
883  int32_t formatLen,
884  const UnicodeString& datePattern,
885  UCalendarDateFields field,
886  UErrorCode& status);
887 
894  static UBool U_EXPORT2 fieldExistsInSkeleton(UCalendarDateFields field,
895  const UnicodeString& skeleton);
896 
897 
903  static int32_t U_EXPORT2 splitPatternInto2Part(const UnicodeString& intervalPattern);
904 
905 
911  void setIntervalPattern(UCalendarDateFields field,
912  const UnicodeString& intervalPattern);
913 
914 
921  void setIntervalPattern(UCalendarDateFields field,
922  const UnicodeString& intervalPattern,
923  UBool laterDateFirst);
924 
925 
935  void setPatternInfo(UCalendarDateFields field,
936  const UnicodeString* firstPart,
937  const UnicodeString* secondPart,
938  UBool laterDateFirst);
939 
940 
941  // from calendar field to pattern letter
942  static const UChar fgCalendarFieldToPatternLetter[];
943 
944 
948  DateIntervalInfo* fInfo;
949 
953  SimpleDateFormat* fDateFormat;
954 
960  Calendar* fFromCalendar;
961  Calendar* fToCalendar;
962 
966  DateTimePatternGenerator* fDtpng;
967 
971  UnicodeString fSkeleton;
972  PatternInfo fIntervalPatterns[DateIntervalInfo::kIPI_MAX_INDEX];
973 };
974 
975 inline UBool
977  return !operator==(other);
978 }
979 
981 
982 #endif /* #if !UCONFIG_NO_FORMATTING */
983 
984 #endif // _DTITVFMT_H__
985 //eof
Base class for all formats.
Definition: format.h:94
UCalendarDateFields
Possible fields in a UCalendar.
Definition: ucal.h:183
DateIntervalFormat is a class for formatting and parsing date intervals in a language-independent man...
Definition: dtitvfmt.h:218
C API: Calendar.
C++ API: Date/Time Pattern Generator.
DateIntervalInfo is a public class for encapsulating localizable date time interval patterns...
Definition: dtitvinf.h:151
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
Calendar is an abstract base class for converting between a UDate object and a set of integer fields ...
Definition: calendar.h:200
This class provides flexible generation of date format patterns, like "yy-MM-dd". ...
Definition: dtptngen.h:50
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
virtual Format * clone() const =0
Clone this object polymorphically.
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:129
This class represents a date interval.
Definition: dtintrv.h:32
#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_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
C++ API: Format and parse dates in a language-independent manner.
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:218
#define NULL
Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
Definition: utypes.h:186
UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const
Formats an object to produce a string.
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
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
C++ API: Date Interval data type.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
SimpleDateFormat is a concrete class for formatting and parsing dates in a language-independent manne...
Definition: smpdtfmt.h:717
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
Definition: fieldpos.h:106
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Definition: parsepos.h:47
DateFormat is an abstract class for a family of classes that convert dates and times from their inter...
Definition: datefmt.h:147
virtual UBool operator==(const Format &other) const =0
Return true if the given Format objects are semantically equal.
virtual void parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const =0
Parse a string to produce an object.
Basic definitions for ICU, for both C and C++ APIs.
C++ API: Date/Time interval patterns for formatting date/time interval.
Format & operator=(const Format &)
UBool operator!=(const Format &other) const
Return true if the given Format objects are not semantically equal.
Definition: format.h:119
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:245
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition: fmtable.h:66
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185