00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifndef SMPDTFMT_H
00024
#define SMPDTFMT_H
00025
00026
#include "unicode/utypes.h"
00027
00028
#if !UCONFIG_NO_FORMATTING
00029
00030
#include "unicode/datefmt.h"
00031
00032
U_NAMESPACE_BEGIN
00033
00034
class DateFormatSymbols;
00035
class DateFormat;
00036
00199 class U_I18N_API SimpleDateFormat:
public DateFormat {
00200
public:
00210 SimpleDateFormat(
UErrorCode& status);
00211
00223 SimpleDateFormat(
const UnicodeString& pattern,
00224
UErrorCode& status);
00225
00238 SimpleDateFormat(
const UnicodeString& pattern,
00239
const Locale& locale,
00240
UErrorCode& status);
00241
00251 SimpleDateFormat(
const UnicodeString& pattern,
00252
DateFormatSymbols* formatDataToAdopt,
00253
UErrorCode& status);
00254
00264 SimpleDateFormat(
const UnicodeString& pattern,
00265
const DateFormatSymbols& formatData,
00266
UErrorCode& status);
00267
00272 SimpleDateFormat(
const SimpleDateFormat&);
00273
00278 SimpleDateFormat& operator=(
const SimpleDateFormat&);
00279
00284
virtual ~SimpleDateFormat();
00285
00292
virtual Format*
clone(
void)
const;
00293
00301
virtual UBool operator==(
const Format& other)
const;
00302
00319
virtual UnicodeString& format(
Calendar& cal,
00320
UnicodeString& appendTo,
00321
FieldPosition& pos)
const;
00322
00342
virtual UnicodeString& format(
const Formattable& obj,
00343
UnicodeString& appendTo,
00344
FieldPosition& pos,
00345
UErrorCode& status)
const;
00346
00357
UnicodeString& format(
UDate date,
00358
UnicodeString& appendTo,
00359
FieldPosition& fieldPosition)
const;
00360
00370
UnicodeString& format(
const Formattable& obj,
00371
UnicodeString& appendTo,
00372
UErrorCode& status)
const;
00373
00382
UnicodeString& format(
UDate date,
UnicodeString& appendTo)
const;
00383
00403
virtual void parse(
const UnicodeString& text,
00404
Calendar& cal,
00405
ParsePosition& pos)
const;
00406
00426
UDate parse(
const UnicodeString& text,
00427
ParsePosition& pos)
const;
00428
00429
00445
virtual UDate parse(
const UnicodeString& text,
00446
UErrorCode& status)
const;
00447
00464
virtual void set2DigitYearStart(
UDate d,
UErrorCode& status);
00465
00481
UDate get2DigitYearStart(
UErrorCode& status)
const;
00482
00489
virtual UnicodeString& toPattern(
UnicodeString& result)
const;
00490
00507
virtual UnicodeString& toLocalizedPattern(
UnicodeString& result,
00508
UErrorCode& status)
const;
00509
00518
virtual void applyPattern(
const UnicodeString& pattern);
00519
00530
virtual void applyLocalizedPattern(
const UnicodeString& pattern,
00531
UErrorCode& status);
00532
00541
virtual const DateFormatSymbols* getDateFormatSymbols(
void)
const;
00542
00549
virtual void adoptDateFormatSymbols(
DateFormatSymbols* newFormatSymbols);
00550
00556
virtual void setDateFormatSymbols(
const DateFormatSymbols& newFormatSymbols);
00557
00569
static UClassID getStaticClassID(
void);
00570
00582
virtual UClassID getDynamicClassID(
void)
const;
00583
00593
virtual void adoptCalendar(
Calendar* calendarToAdopt);
00594
00595
private:
00596
friend class DateFormat;
00597
00598
void initializeDefaultCentury(
void);
00599
00600 SimpleDateFormat();
00601
00610 SimpleDateFormat(EStyle timeStyle, EStyle dateStyle,
const Locale& locale,
UErrorCode& status);
00611
00620 SimpleDateFormat(
const Locale& locale,
UErrorCode& status);
00621
00638
void subFormat(
UnicodeString &appendTo,
00639
UChar ch,
00640
int32_t count,
00641
FieldPosition& pos,
00642
Calendar& cal,
00643
UErrorCode& status)
const;
00644
00657
void zeroPaddingNumber(
UnicodeString &appendTo,
00658
int32_t value,
00659
int32_t minDigits,
00660
int32_t maxDigits)
const;
00661
00666
static UBool isNumeric(
UChar formatChar,
int32_t count);
00667
00675
Calendar *initializeCalendar(
TimeZone* adoptZone,
const Locale& locale,
UErrorCode& status);
00676
00683
void initializeSymbols(
const Locale& locale,
Calendar* calendar,
UErrorCode& status);
00684
00694
void construct(EStyle timeStyle, EStyle dateStyle,
const Locale& locale,
UErrorCode& status);
00695
00702
void initialize(
const Locale& locale,
UErrorCode& status);
00703
00716
int32_t matchString(
const UnicodeString& text,
int32_t start,
UCalendarDateFields field,
00717
const UnicodeString* stringArray,
int32_t stringArrayCount,
Calendar& cal)
const;
00718
00733
int32_t subParse(
const UnicodeString& text,
int32_t& start,
UChar ch,
int32_t count,
00734
UBool obeyCount,
UBool allowNegative,
UBool ambiguousYear[],
Calendar& cal)
const;
00735
00736
void parseInt(
const UnicodeString& text,
00737
Formattable& number,
00738
ParsePosition& pos,
00739
UBool allowNegative)
const;
00740
00753
static void translatePattern(
const UnicodeString& originalPattern,
00754
UnicodeString& translatedPattern,
00755
const UnicodeString& from,
00756
const UnicodeString& to,
00757
UErrorCode& status);
00758
00766
void parseAmbiguousDatesAsAfter(
UDate startDate,
UErrorCode& status);
00767
00771
static const UCalendarDateFields fgPatternIndexToCalendarField[];
00772
00776
static const UDateFormatField fgPatternIndexToDateFormatField[];
00777
00781
UnicodeString fPattern;
00782
00786
Locale fLocale;
00787
00792
DateFormatSymbols* fSymbols;
00793
00802
UDate fDefaultCenturyStart;
00803
00807
int32_t fDefaultCenturyStartYear;
00808
00809
UBool fHaveDefaultCentury;
00810 };
00811
00812
inline UDate
00813 SimpleDateFormat::get2DigitYearStart(UErrorCode& )
const
00814
{
00815
return fDefaultCenturyStart;
00816 }
00817
00818
inline UnicodeString&
00819
SimpleDateFormat::format(
const Formattable& obj,
00820
UnicodeString& appendTo,
00821 UErrorCode& status)
const {
00822
00823
00824
return DateFormat::format(obj, appendTo, status);
00825 }
00826
00827
inline UnicodeString&
00828
SimpleDateFormat::format(UDate date,
00829
UnicodeString& appendTo,
00830
FieldPosition& fieldPosition)
const {
00831
00832
00833
return DateFormat::format(date, appendTo, fieldPosition);
00834 }
00835
00836
inline UnicodeString&
00837
SimpleDateFormat::format(UDate date,
UnicodeString& appendTo)
const {
00838
return DateFormat::format(date, appendTo);
00839 }
00840
00841
U_NAMESPACE_END
00842
00843 #endif
00844
00845
#endif // _SMPDTFMT
00846