ICU 50.2 50.2
datefmt.h
Go to the documentation of this file.
1/*
2 ********************************************************************************
3 * Copyright (C) 1997-2012, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 ********************************************************************************
6 *
7 * File DATEFMT.H
8 *
9 * Modification History:
10 *
11 * Date Name Description
12 * 02/19/97 aliu Converted from java.
13 * 04/01/97 aliu Added support for centuries.
14 * 07/23/98 stephen JDK 1.2 sync
15 * 11/15/99 weiv Added support for week of year/day of week formatting
16 ********************************************************************************
17 */
18
19#ifndef DATEFMT_H
20#define DATEFMT_H
21
22#include "unicode/utypes.h"
23
24#if !UCONFIG_NO_FORMATTING
25
26#include "unicode/udat.h"
27#include "unicode/calendar.h"
28#include "unicode/numfmt.h"
29#include "unicode/format.h"
30#include "unicode/locid.h"
31
36
38
39class TimeZone;
41
139public:
140
149 {
150 kNone = -1,
151
152 kFull = 0,
153 kLong = 1,
154 kMedium = 2,
155 kShort = 3,
156
157 kDateOffset = kShort + 1,
158 // kFull + kDateOffset = 4
159 // kLong + kDateOffset = 5
160 // kMedium + kDateOffset = 6
161 // kShort + kDateOffset = 7
162
163 kDateTime = 8,
164 // Default DateTime
165
166 kDateTimeOffset = kDateTime + 1,
167 // kFull + kDateTimeOffset = 9
168 // kLong + kDateTimeOffset = 10
169 // kMedium + kDateTimeOffset = 11
170 // kShort + kDateTimeOffset = 12
171
172 // relative dates
173 kRelative = (1 << 7),
174
175 kFullRelative = (kFull | kRelative),
176
177 kLongRelative = kLong | kRelative,
178
179 kMediumRelative = kMedium | kRelative,
180
181 kShortRelative = kShort | kRelative,
182
183
184 kDefault = kMedium,
185
186
187
192 FULL = kFull,
193 LONG = kLong,
194 MEDIUM = kMedium,
195 SHORT = kShort,
196 DEFAULT = kDefault,
197 DATE_OFFSET = kDateOffset,
198 NONE = kNone,
199 DATE_TIME = kDateTime
200 };
201
206 virtual ~DateFormat();
207
212 virtual UBool operator==(const Format&) const;
213
214
215 using Format::format;
216
231 virtual UnicodeString& format(const Formattable& obj,
232 UnicodeString& appendTo,
233 FieldPosition& pos,
234 UErrorCode& status) const;
235
251 virtual UnicodeString& format(const Formattable& obj,
252 UnicodeString& appendTo,
253 FieldPositionIterator* posIter,
254 UErrorCode& status) const;
289 UnicodeString& appendTo,
290 FieldPosition& fieldPosition) const = 0;
291
311 UnicodeString& appendTo,
312 FieldPositionIterator* posIter,
313 UErrorCode& status) const;
342 UnicodeString& appendTo,
343 FieldPosition& fieldPosition) const;
344
359 UnicodeString& appendTo,
360 FieldPositionIterator* posIter,
361 UErrorCode& status) const;
373 UnicodeString& format(UDate date, UnicodeString& appendTo) const;
374
385 UnicodeString& format(const Formattable& obj,
386 UnicodeString& appendTo,
387 UErrorCode& status) const;
388
423 virtual UDate parse( const UnicodeString& text,
424 UErrorCode& status) const;
425
452 virtual void parse( const UnicodeString& text,
453 Calendar& cal,
454 ParsePosition& pos) const = 0;
455
487 ParsePosition& pos) const;
488
512 virtual void parseObject(const UnicodeString& source,
513 Formattable& result,
514 ParsePosition& parse_pos) const;
515
523 static DateFormat* U_EXPORT2 createInstance(void);
524
536 static DateFormat* U_EXPORT2 createTimeInstance(EStyle style = kDefault,
537 const Locale& aLocale = Locale::getDefault());
538
554 static DateFormat* U_EXPORT2 createDateInstance(EStyle style = kDefault,
555 const Locale& aLocale = Locale::getDefault());
556
575 static DateFormat* U_EXPORT2 createDateTimeInstance(EStyle dateStyle = kDefault,
576 EStyle timeStyle = kDefault,
577 const Locale& aLocale = Locale::getDefault());
578
586 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
587
592 virtual UBool isLenient(void) const;
593
604 virtual void setLenient(UBool lenient);
605
611 virtual const Calendar* getCalendar(void) const;
612
622 virtual void adoptCalendar(Calendar* calendarToAdopt);
623
631 virtual void setCalendar(const Calendar& newCalendar);
632
633
640 virtual const NumberFormat* getNumberFormat(void) const;
641
648 virtual void adoptNumberFormat(NumberFormat* formatToAdopt);
649
655 virtual void setNumberFormat(const NumberFormat& newNumberFormat);
656
662 virtual const TimeZone& getTimeZone(void) const;
663
670 virtual void adoptTimeZone(TimeZone* zoneToAdopt);
671
677 virtual void setTimeZone(const TimeZone& zone);
678
679protected:
687
693
699
707
715
716private:
725 static DateFormat* U_EXPORT2 create(EStyle timeStyle, EStyle dateStyle, const Locale& inLocale);
726
727public:
728#ifndef U_HIDE_OBSOLETE_API
735 {
736 // Obsolete; use UDateFormatField instead
737 kEraField = UDAT_ERA_FIELD,
738 kYearField = UDAT_YEAR_FIELD,
739 kMonthField = UDAT_MONTH_FIELD,
740 kDateField = UDAT_DATE_FIELD,
741 kHourOfDay1Field = UDAT_HOUR_OF_DAY1_FIELD,
742 kHourOfDay0Field = UDAT_HOUR_OF_DAY0_FIELD,
743 kMinuteField = UDAT_MINUTE_FIELD,
744 kSecondField = UDAT_SECOND_FIELD,
745 kMillisecondField = UDAT_FRACTIONAL_SECOND_FIELD,
746 kDayOfWeekField = UDAT_DAY_OF_WEEK_FIELD,
747 kDayOfYearField = UDAT_DAY_OF_YEAR_FIELD,
748 kDayOfWeekInMonthField = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD,
749 kWeekOfYearField = UDAT_WEEK_OF_YEAR_FIELD,
750 kWeekOfMonthField = UDAT_WEEK_OF_MONTH_FIELD,
751 kAmPmField = UDAT_AM_PM_FIELD,
752 kHour1Field = UDAT_HOUR1_FIELD,
753 kHour0Field = UDAT_HOUR0_FIELD,
754 kTimezoneField = UDAT_TIMEZONE_FIELD,
755 kYearWOYField = UDAT_YEAR_WOY_FIELD,
756 kDOWLocalField = UDAT_DOW_LOCAL_FIELD,
757 kExtendedYearField = UDAT_EXTENDED_YEAR_FIELD,
758 kJulianDayField = UDAT_JULIAN_DAY_FIELD,
759 kMillisecondsInDayField = UDAT_MILLISECONDS_IN_DAY_FIELD,
760
761 // Obsolete; use UDateFormatField instead
762 ERA_FIELD = UDAT_ERA_FIELD,
763 YEAR_FIELD = UDAT_YEAR_FIELD,
764 MONTH_FIELD = UDAT_MONTH_FIELD,
765 DATE_FIELD = UDAT_DATE_FIELD,
766 HOUR_OF_DAY1_FIELD = UDAT_HOUR_OF_DAY1_FIELD,
767 HOUR_OF_DAY0_FIELD = UDAT_HOUR_OF_DAY0_FIELD,
768 MINUTE_FIELD = UDAT_MINUTE_FIELD,
769 SECOND_FIELD = UDAT_SECOND_FIELD,
770 MILLISECOND_FIELD = UDAT_FRACTIONAL_SECOND_FIELD,
771 DAY_OF_WEEK_FIELD = UDAT_DAY_OF_WEEK_FIELD,
772 DAY_OF_YEAR_FIELD = UDAT_DAY_OF_YEAR_FIELD,
773 DAY_OF_WEEK_IN_MONTH_FIELD = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD,
774 WEEK_OF_YEAR_FIELD = UDAT_WEEK_OF_YEAR_FIELD,
775 WEEK_OF_MONTH_FIELD = UDAT_WEEK_OF_MONTH_FIELD,
776 AM_PM_FIELD = UDAT_AM_PM_FIELD,
777 HOUR1_FIELD = UDAT_HOUR1_FIELD,
778 HOUR0_FIELD = UDAT_HOUR0_FIELD,
779 TIMEZONE_FIELD = UDAT_TIMEZONE_FIELD
780 };
781#endif /* U_HIDE_OBSOLETE_API */
782};
783
784inline UnicodeString&
786 UnicodeString& appendTo,
787 UErrorCode& status) const {
788 return Format::format(obj, appendTo, status);
789}
791
792#endif /* #if !UCONFIG_NO_FORMATTING */
793
794#endif // _DATEFMT
795//eof
C++ API: Calendar object.
Calendar is an abstract base class for converting between a UDate object and a set of integer fields ...
Definition calendar.h:200
virtual ~DateFormat()
Destructor.
Calendar * fCalendar
The calendar that DateFormat uses to produce the time field values needed to implement date/time form...
Definition datefmt.h:706
virtual UnicodeString & format(Calendar &cal, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const
Formats a date into a date/time string.
EField
Field selector for FieldPosition for DateFormat fields.
Definition datefmt.h:735
UnicodeString & format(UDate date, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const
Formats a UDate into a date/time string.
virtual void setTimeZone(const TimeZone &zone)
Sets the time zone for the calendar of this DateFormat object.
NumberFormat * fNumberFormat
The number formatter that DateFormat uses to format numbers in dates and times.
Definition datefmt.h:714
virtual const TimeZone & getTimeZone(void) const
Returns a reference to the TimeZone used by this DateFormat's calendar.
virtual UDate parse(const UnicodeString &text, UErrorCode &status) const
Parse a date/time string.
DateFormat()
Default constructor.
static DateFormat * createDateTimeInstance(EStyle dateStyle=kDefault, EStyle timeStyle=kDefault, const Locale &aLocale=Locale::getDefault())
Creates a date/time formatter with the given formatting styles for the given locale.
UnicodeString & format(UDate date, UnicodeString &appendTo, FieldPosition &fieldPosition) const
Formats a UDate into a date/time string.
static DateFormat * createTimeInstance(EStyle style=kDefault, const Locale &aLocale=Locale::getDefault())
Creates a time formatter with the given formatting style for the given locale.
virtual UnicodeString & format(Calendar &cal, UnicodeString &appendTo, FieldPosition &fieldPosition) const =0
Formats a date into a date/time string.
virtual void setCalendar(const Calendar &newCalendar)
Set the calendar to be used by this date format.
virtual void adoptNumberFormat(NumberFormat *formatToAdopt)
Allows you to set the number formatter.
virtual UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const
Format an object to produce a string.
virtual void setLenient(UBool lenient)
Specify whether or not date/time parsing is to be lenient.
UDate parse(const UnicodeString &text, ParsePosition &pos) const
Parse a date/time string beginning at the given parse position.
virtual void parse(const UnicodeString &text, Calendar &cal, ParsePosition &pos) const =0
Parse a date/time string beginning at the given parse position.
virtual void adoptTimeZone(TimeZone *zoneToAdopt)
Sets the time zone for the calendar of this DateFormat object.
virtual UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const
Format an object to produce a string.
virtual void adoptCalendar(Calendar *calendarToAdopt)
Set the calendar to be used by this date format.
static DateFormat * createInstance(void)
Create a default date/time formatter that uses the SHORT style for both the date and the time.
EStyle
Constants for various style patterns.
Definition datefmt.h:149
@ FULL
These constants are provided for backwards compatibility only.
Definition datefmt.h:192
virtual const NumberFormat * getNumberFormat(void) const
Gets the number formatter which this date/time formatter uses to format and parse the numeric portion...
virtual UBool operator==(const Format &) const
Equality operator.
DateFormat(const DateFormat &)
Copy constructor.
virtual const Calendar * getCalendar(void) const
Gets the calendar associated with this date/time formatter.
virtual void setNumberFormat(const NumberFormat &newNumberFormat)
Allows you to set the number formatter.
static DateFormat * createDateInstance(EStyle style=kDefault, const Locale &aLocale=Locale::getDefault())
Creates a date formatter with the given formatting style for the given const locale.
UnicodeString & format(UDate date, UnicodeString &appendTo) const
Formats a UDate into a date/time string.
virtual void parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const
Parse a string to produce an object.
DateFormat & operator=(const DateFormat &)
Default assignment operator.
static const Locale * getAvailableLocales(int32_t &count)
Gets the set of locales for which DateFormats are installed.
virtual UBool isLenient(void) const
Returns true if the formatter is set for lenient parsing.
This class provides flexible generation of date format patterns, like "yy-MM-dd".
Definition dtptngen.h:49
FieldPositionIterator returns the field ids and their start/limit positions generated by a call to Fo...
Definition fpositer.h:53
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
Definition fieldpos.h:106
UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const
Formats an object to produce a string.
Format()
Default constructor for subclass use only.
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition fmtable.h:62
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:182
static const Locale & getDefault(void)
Common methods of getting the current default Locale.
Abstract base class for all number formats.
Definition numfmt.h:166
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Definition parsepos.h:47
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:247
C++ API: Base class for all formats.
C++ API: Locale ID object.
C++ API: Abstract base class for all number formats.
C API: DateFormat.
@ UDAT_AM_PM_FIELD
FieldPosition and UFieldPosition selector for 'a' field alignment, corresponding to the UCAL_AM_PM fi...
Definition udat.h:589
@ UDAT_TIMEZONE_FIELD
FieldPosition and UFieldPosition selector for 'z' field alignment, corresponding to the UCAL_ZONE_OFF...
Definition udat.h:615
@ UDAT_DOW_LOCAL_FIELD
FieldPosition and UFieldPosition selector for 'e' field alignment, corresponding to the UCAL_DOW_LOCA...
Definition udat.h:629
@ UDAT_DATE_FIELD
FieldPosition and UFieldPosition selector for 'd' field alignment, corresponding to the UCAL_DATE fie...
Definition udat.h:500
@ UDAT_MONTH_FIELD
FieldPosition and UFieldPosition selector for 'M' field alignment, corresponding to the UCAL_MONTH fi...
Definition udat.h:493
@ UDAT_JULIAN_DAY_FIELD
FieldPosition and UFieldPosition selector for 'g' field alignment, corresponding to the UCAL_JULIAN_D...
Definition udat.h:643
@ UDAT_EXTENDED_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'u' field alignment, corresponding to the UCAL_EXTENDED...
Definition udat.h:636
@ UDAT_DAY_OF_WEEK_FIELD
FieldPosition and UFieldPosition selector for 'E' field alignment, corresponding to the UCAL_DAY_OF_W...
Definition udat.h:554
@ UDAT_MILLISECONDS_IN_DAY_FIELD
FieldPosition and UFieldPosition selector for 'A' field alignment, corresponding to the UCAL_MILLISEC...
Definition udat.h:650
@ UDAT_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'y' field alignment, corresponding to the UCAL_YEAR fie...
Definition udat.h:486
@ UDAT_ERA_FIELD
FieldPosition and UFieldPosition selector for 'G' field alignment, corresponding to the UCAL_ERA fiel...
Definition udat.h:479
@ UDAT_DAY_OF_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'D' field alignment, corresponding to the UCAL_DAY_OF_Y...
Definition udat.h:561
@ UDAT_WEEK_OF_MONTH_FIELD
FieldPosition and UFieldPosition selector for 'W' field alignment, corresponding to the UCAL_WEEK_OF_...
Definition udat.h:582
@ UDAT_FRACTIONAL_SECOND_FIELD
FieldPosition and UFieldPosition selector for 'S' field alignment, corresponding to the UCAL_MILLISEC...
Definition udat.h:547
@ UDAT_DAY_OF_WEEK_IN_MONTH_FIELD
FieldPosition and UFieldPosition selector for 'F' field alignment, corresponding to the UCAL_DAY_OF_W...
Definition udat.h:568
@ UDAT_SECOND_FIELD
FieldPosition and UFieldPosition selector for 's' field alignment, corresponding to the UCAL_SECOND f...
Definition udat.h:532
@ UDAT_HOUR1_FIELD
FieldPosition and UFieldPosition selector for 'h' field alignment, corresponding to the UCAL_HOUR fie...
Definition udat.h:598
@ UDAT_MINUTE_FIELD
FieldPosition and UFieldPosition selector for 'm' field alignment, corresponding to the UCAL_MINUTE f...
Definition udat.h:525
@ UDAT_HOUR0_FIELD
FieldPosition and UFieldPosition selector for 'K' field alignment, corresponding to the UCAL_HOUR fie...
Definition udat.h:607
@ UDAT_YEAR_WOY_FIELD
FieldPosition and UFieldPosition selector for 'Y' field alignment, corresponding to the UCAL_YEAR_WOY...
Definition udat.h:622
@ UDAT_WEEK_OF_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'w' field alignment, corresponding to the UCAL_WEEK_OF_...
Definition udat.h:575
@ UDAT_HOUR_OF_DAY0_FIELD
FieldPosition and UFieldPosition selector for 'H' field alignment, corresponding to the UCAL_HOUR_OF_...
Definition udat.h:518
@ UDAT_HOUR_OF_DAY1_FIELD
FieldPosition and UFieldPosition selector for 'k' field alignment, corresponding to the UCAL_HOUR_OF_...
Definition udat.h:509
int8_t UBool
The ICU boolean type.
Definition umachine.h:200
Basic definitions for ICU, for both C and C++ APIs.
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
double UDate
Date and Time data type.
Definition utypes.h:201
#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