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
#include "unicode/datefmt.h"
00028
00029 U_NAMESPACE_BEGIN
00030
00031
class DateFormatSymbols;
00032
class DateFormat;
00033
00175 class U_I18N_API SimpleDateFormat:
public DateFormat {
00176
public:
00185 SimpleDateFormat(UErrorCode& status);
00186
00196 SimpleDateFormat(
const UnicodeString& pattern,
00197 UErrorCode& status);
00198
00208 SimpleDateFormat(
const UnicodeString& pattern,
00209
const Locale& locale,
00210 UErrorCode& status);
00211
00218 SimpleDateFormat(
const UnicodeString& pattern,
00219
DateFormatSymbols* formatDataToAdopt,
00220 UErrorCode& status);
00221
00228 SimpleDateFormat(
const UnicodeString& pattern,
00229
const DateFormatSymbols& formatData,
00230 UErrorCode& status);
00231
00236 SimpleDateFormat(
const SimpleDateFormat&);
00237
00242 SimpleDateFormat& operator=(
const SimpleDateFormat&);
00243
00248
virtual ~SimpleDateFormat();
00249
00255
virtual Format*
clone(
void)
const;
00256
00262
virtual UBool operator==(
const Format& other)
const;
00263
00280
virtual UnicodeString& format(
Calendar& cal,
00281
UnicodeString& toAppendTo,
00282
FieldPosition& pos)
const;
00283
00302
virtual UnicodeString& format(
const Formattable& obj,
00303
UnicodeString& toAppendTo,
00304
FieldPosition& pos,
00305 UErrorCode& status)
const;
00306
00311
UnicodeString& format(
UDate date,
00312
UnicodeString& result,
00313
FieldPosition& fieldPosition)
const;
00314
00319
UnicodeString& format(
const Formattable& obj,
00320
UnicodeString& result,
00321 UErrorCode& status)
const;
00322
00327
UnicodeString& format(
UDate date,
UnicodeString& result)
const;
00328
00346
virtual void parse(
const UnicodeString& text,
00347
Calendar& cal,
00348
ParsePosition& pos)
const;
00349
00369
UDate parse(
const UnicodeString& text,
00370
ParsePosition& pos)
const;
00371
00372
00388
virtual UDate parse(
const UnicodeString& text,
00389 UErrorCode& status)
const;
00390
00404
virtual void set2DigitYearStart(
UDate d, UErrorCode& status);
00405
00419
UDate get2DigitYearStart(UErrorCode& status)
const;
00420
00425
virtual UnicodeString& toPattern(
UnicodeString& result)
const;
00426
00442
virtual UnicodeString& toLocalizedPattern(
UnicodeString& result,
00443 UErrorCode& status)
const;
00444
00453
virtual void applyPattern(
const UnicodeString& pattern);
00454
00465
virtual void applyLocalizedPattern(
const UnicodeString& pattern,
00466 UErrorCode& status);
00467
00476
virtual const DateFormatSymbols* getDateFormatSymbols(
void)
const;
00477
00484
virtual void adoptDateFormatSymbols(
DateFormatSymbols* newFormatSymbols);
00485
00491
virtual void setDateFormatSymbols(
const DateFormatSymbols& newFormatSymbols);
00492
00504 static UClassID getStaticClassID(
void) {
return (
UClassID)&fgClassID; }
00505
00517 virtual UClassID getDynamicClassID(
void)
const {
return getStaticClassID(); }
00518
00519
private:
00520
static const char fgClassID;
00521
00522
static const char fgDateTimePatternsTag[];
00523
00524
static const UChar fgDefaultPattern[];
00525
00526
friend class DateFormat;
00527
00540
00541
00542
void initializeDefaultCentury(
void);
00543
00547 SimpleDateFormat(EStyle timeStyle, EStyle dateStyle,
const Locale& locale, UErrorCode& status);
00548
00554 SimpleDateFormat(
const Locale& locale, UErrorCode& status);
00555
00575
UnicodeString& subFormat(
UnicodeString& result,
00576 UChar ch,
00577 int32_t count,
00578 int32_t beginOffset,
00579
FieldPosition& pos,
00580
Calendar& cal,
00581 UErrorCode& status)
const;
00582
00593
UnicodeString& zeroPaddingNumber(
UnicodeString& result,
00594 int32_t value,
00595 int32_t minDigits,
00596 int32_t maxDigits)
const;
00597
00607
void construct(EStyle timeStyle, EStyle dateStyle,
const Locale& locale, UErrorCode& status);
00608
00615
void initialize(
const Locale& locale, UErrorCode& status);
00616
00626 int32_t matchString(
const UnicodeString& text, int32_t start, Calendar::EDateFields field,
00627
const UnicodeString* stringArray, int32_t stringArrayCount,
Calendar& cal)
const;
00628
00640 int32_t subParse(
const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
00641 UBool obeyCount, UBool ambiguousYear[],
Calendar& cal)
const;
00642
00650
00651
00658
static void translatePattern(
const UnicodeString& originalPattern,
00659
UnicodeString& translatedPattern,
00660
const UnicodeString& from,
00661
const UnicodeString& to,
00662 UErrorCode& status);
00667
00668
00673
void parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status);
00674
00679
UDate internalGetDefaultCenturyStart(
void) const;
00680
00685 int32_t internalGetDefaultCenturyStartYear(
void) const;
00686
00691 static
void initializeSystemDefaultCentury(
void);
00692
00696
00697
00698 static const UChar fgGmtPlus[];
00699 static const UChar fgGmtMinus[];
00700 static const UChar fgGmt[];
00701
00705 static const
Calendar::EDateFields fgPatternIndexToCalendarField[];
00706
00710 static const
DateFormat::EField fgPatternIndexToDateFormatField[];
00711
00715
UnicodeString fPattern;
00716
00721
DateFormatSymbols* fSymbols;
00722
00731 UDate fDefaultCenturyStart;
00732
00736 int32_t fDefaultCenturyStartYear;
00737
00744 static UDate fgSystemDefaultCenturyStart;
00745
00749 static int32_t fgSystemDefaultCenturyStartYear;
00750
00754 static const int32_t fgSystemDefaultCenturyYear;
00755
00756 public:
00761 static const UDate fgSystemDefaultCentury;
00762 };
00763
00764 inline UDate
00765 SimpleDateFormat::get2DigitYearStart(UErrorCode& )
const
00766
{
00767
return fDefaultCenturyStart;
00768 }
00769
00770
inline UnicodeString&
00771 SimpleDateFormat::format(
const Formattable& obj,
00772
UnicodeString& result,
00773 UErrorCode& status)
const {
00774
00775
00776
return DateFormat::format(obj, result, status);
00777 }
00778
00779
inline UnicodeString&
00780 SimpleDateFormat::format(UDate date,
00781
UnicodeString& result,
00782
FieldPosition& fieldPosition)
const {
00783
00784
00785
return DateFormat::format(date, result, fieldPosition);
00786 }
00787
00788
inline UnicodeString&
00789 SimpleDateFormat::format(UDate date,
UnicodeString& result)
const {
00790
return DateFormat::format(date, result);
00791 }
00792
00793 U_NAMESPACE_END
00794
00795
#endif // _SMPDTFMT
00796