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
00190 class U_I18N_API SimpleDateFormat:
public DateFormat {
00191
public:
00201 SimpleDateFormat(
UErrorCode& status);
00202
00214 SimpleDateFormat(
const UnicodeString& pattern,
00215
UErrorCode& status);
00216
00229 SimpleDateFormat(
const UnicodeString& pattern,
00230
const Locale& locale,
00231
UErrorCode& status);
00232
00242 SimpleDateFormat(
const UnicodeString& pattern,
00243
DateFormatSymbols* formatDataToAdopt,
00244
UErrorCode& status);
00245
00255 SimpleDateFormat(
const UnicodeString& pattern,
00256
const DateFormatSymbols& formatData,
00257
UErrorCode& status);
00258
00263 SimpleDateFormat(
const SimpleDateFormat&);
00264
00269 SimpleDateFormat& operator=(
const SimpleDateFormat&);
00270
00275
virtual ~SimpleDateFormat();
00276
00283
virtual Format*
clone(
void)
const;
00284
00292
virtual UBool operator==(
const Format& other)
const;
00293
00310
virtual UnicodeString& format(
Calendar& cal,
00311
UnicodeString& appendTo,
00312
FieldPosition& pos)
const;
00313
00333
virtual UnicodeString& format(
const Formattable& obj,
00334
UnicodeString& appendTo,
00335
FieldPosition& pos,
00336
UErrorCode& status)
const;
00337
00348
UnicodeString& format(
UDate date,
00349
UnicodeString& appendTo,
00350
FieldPosition& fieldPosition)
const;
00351
00361
UnicodeString& format(
const Formattable& obj,
00362
UnicodeString& appendTo,
00363
UErrorCode& status)
const;
00364
00373
UnicodeString& format(
UDate date,
UnicodeString& appendTo)
const;
00374
00394
virtual void parse(
const UnicodeString& text,
00395
Calendar& cal,
00396
ParsePosition& pos)
const;
00397
00417
UDate parse(
const UnicodeString& text,
00418
ParsePosition& pos)
const;
00419
00420
00436
virtual UDate parse(
const UnicodeString& text,
00437
UErrorCode& status)
const;
00438
00455
virtual void set2DigitYearStart(
UDate d,
UErrorCode& status);
00456
00472
UDate get2DigitYearStart(
UErrorCode& status)
const;
00473
00480
virtual UnicodeString& toPattern(
UnicodeString& result)
const;
00481
00498
virtual UnicodeString& toLocalizedPattern(
UnicodeString& result,
00499
UErrorCode& status)
const;
00500
00509
virtual void applyPattern(
const UnicodeString& pattern);
00510
00521
virtual void applyLocalizedPattern(
const UnicodeString& pattern,
00522
UErrorCode& status);
00523
00532
virtual const DateFormatSymbols* getDateFormatSymbols(
void)
const;
00533
00540
virtual void adoptDateFormatSymbols(
DateFormatSymbols* newFormatSymbols);
00541
00547
virtual void setDateFormatSymbols(
const DateFormatSymbols& newFormatSymbols);
00548
00560
static UClassID getStaticClassID(
void);
00561
00573
virtual UClassID getDynamicClassID(
void)
const;
00574
00584
virtual void adoptCalendar(
Calendar* calendarToAdopt);
00585
00586
private:
00587
friend class DateFormat;
00588
00589
void initializeDefaultCentury(
void);
00590
00591 SimpleDateFormat();
00592
00601 SimpleDateFormat(EStyle timeStyle, EStyle dateStyle,
const Locale& locale,
UErrorCode& status);
00602
00611 SimpleDateFormat(
const Locale& locale,
UErrorCode& status);
00612
00629
void subFormat(
UnicodeString &appendTo,
00630
UChar ch,
00631 int32_t count,
00632
FieldPosition& pos,
00633
Calendar& cal,
00634
UErrorCode& status)
const;
00635
00648
void zeroPaddingNumber(
UnicodeString &appendTo,
00649 int32_t value,
00650 int32_t minDigits,
00651 int32_t maxDigits)
const;
00652
00657
static UBool isNumeric(
UChar formatChar, int32_t count);
00658
00666
Calendar *initializeCalendar(
TimeZone* adoptZone,
const Locale& locale,
UErrorCode& status);
00667
00674
void initializeSymbols(
const Locale& locale,
Calendar* calendar,
UErrorCode& status);
00675
00685
void construct(EStyle timeStyle, EStyle dateStyle,
const Locale& locale,
UErrorCode& status);
00686
00693
void initialize(
const Locale& locale,
UErrorCode& status);
00694
00707 int32_t matchString(
const UnicodeString& text, int32_t start,
UCalendarDateFields field,
00708
const UnicodeString* stringArray, int32_t stringArrayCount,
Calendar& cal)
const;
00709
00724 int32_t subParse(
const UnicodeString& text, int32_t& start,
UChar ch, int32_t count,
00725
UBool obeyCount,
UBool allowNegative,
UBool ambiguousYear[],
Calendar& cal)
const;
00726
00727
void parseInt(
const UnicodeString& text,
00728
Formattable& number,
00729
ParsePosition& pos,
00730
UBool allowNegative)
const;
00731
00744
static void translatePattern(
const UnicodeString& originalPattern,
00745
UnicodeString& translatedPattern,
00746
const UnicodeString& from,
00747
const UnicodeString& to,
00748
UErrorCode& status);
00749
00757
void parseAmbiguousDatesAsAfter(
UDate startDate,
UErrorCode& status);
00758
00762
static const UCalendarDateFields fgPatternIndexToCalendarField[];
00763
00767
static const DateFormat::EField fgPatternIndexToDateFormatField[];
00768
00772
UnicodeString fPattern;
00773
00777
Locale fLocale;
00778
00783
DateFormatSymbols* fSymbols;
00784
00793
UDate fDefaultCenturyStart;
00794
00798 int32_t fDefaultCenturyStartYear;
00799
00800
UBool fHaveDefaultCentury;
00801 };
00802
00803
inline UDate
00804 SimpleDateFormat::get2DigitYearStart(UErrorCode& )
const
00805
{
00806
return fDefaultCenturyStart;
00807 }
00808
00809
inline UnicodeString&
00810 SimpleDateFormat::format(
const Formattable& obj,
00811
UnicodeString& appendTo,
00812 UErrorCode& status)
const {
00813
00814
00815
return DateFormat::format(obj, appendTo, status);
00816 }
00817
00818
inline UnicodeString&
00819 SimpleDateFormat::format(UDate date,
00820
UnicodeString& appendTo,
00821
FieldPosition& fieldPosition)
const {
00822
00823
00824
return DateFormat::format(date, appendTo, fieldPosition);
00825 }
00826
00827
inline UnicodeString&
00828 SimpleDateFormat::format(UDate date,
UnicodeString& appendTo)
const {
00829
return DateFormat::format(date, appendTo);
00830 }
00831
00832
U_NAMESPACE_END
00833
00834
#endif
00835
00836
#endif // _SMPDTFMT
00837