Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Header Files   Compound Members   File Members  

datefmt.h

This is the verbatim text of the datefmt.h include file.
/*
********************************************************************************
*   Copyright (C) 1997-1999, International Business Machines
*   Corporation and others.  All Rights Reserved.
********************************************************************************
*
* File DATEFMT.H
*
* Modification History:
*
*   Date        Name        Description
*   02/19/97    aliu        Converted from java.
*   04/01/97    aliu        Added support for centuries.
*    07/23/98    stephen        JDK 1.2 sync
*   11/15/99    weiv        Added support for week of year/day of week formatting
********************************************************************************
*/

#ifndef DATEFMT_H
#define DATEFMT_H
 
#include "unicode/utypes.h"
#include "unicode/calendar.h"
#include "unicode/numfmt.h"
#include "unicode/format.h"
#include "unicode/locid.h"
class TimeZone;

class U_I18N_API DateFormat : public Format {
public:
    enum EField
    {
        kEraField,          // ERA field alignment.
        kYearField,         // YEAR field alignment.
        kMonthField,        // MONTH field alignment.
        kDateField,         // DATE field alignment.
        kHourOfDay1Field,     // One-based HOUR_OF_DAY field alignment.
                            // kHourOfDay1Field is used for the one-based 24-hour clock.
                            // For example, 23:59 + 01:00 results in 24:59.
        kHourOfDay0Field,     // Zero-based HOUR_OF_DAY field alignment.
                            // HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
                            // For example, 23:59 + 01:00 results in 00:59.
        kMinuteField,       // MINUTE field alignment.
        kSecondField,       // SECOND field alignment.
        kMillisecondField,  // MILLISECOND field alignment.
        kDayOfWeekField,      // DAY_OF_WEEK field alignment.
        kDayOfYearField,      // DAY_OF_YEAR field alignment.
        kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment.
        kWeekOfYearField,     // WEEK_OF_YEAR field alignment.
        kWeekOfMonthField,    // WEEK_OF_MONTH field alignment.
        kAmPmField,            // AM_PM field alignment.
        kHour1Field,        // One-based HOUR field alignment.
                            // HOUR1_FIELD is used for the one-based 12-hour clock.
                            // For example, 11:30 PM + 1 hour results in 12:30 AM.
        kHour0Field,        // Zero-based HOUR field alignment.
                            // HOUR0_FIELD is used for the zero-based 12-hour clock.
                            // For example, 11:30 PM + 1 hour results in 00:30 AM.
        kTimezoneField,      // TIMEZONE field alignment.
        kYearWOYField,   // Corrected year for week representation
        kDOWLocalField, // localized day of week

        
        
        ERA_FIELD                     = kEraField,
        YEAR_FIELD                     = kYearField,
        MONTH_FIELD                 = kMonthField,
        DATE_FIELD                     = kDateField,
        HOUR_OF_DAY1_FIELD             = kHourOfDay1Field,
        HOUR_OF_DAY0_FIELD             = kHourOfDay0Field,
        MINUTE_FIELD                 = kMinuteField,
        SECOND_FIELD                 = kSecondField,
        MILLISECOND_FIELD             = kMillisecondField,
        DAY_OF_WEEK_FIELD             = kDayOfWeekField,
        DAY_OF_YEAR_FIELD             = kDayOfYearField,
        DAY_OF_WEEK_IN_MONTH_FIELD     = kDayOfWeekInMonthField,
        WEEK_OF_YEAR_FIELD             = kWeekOfYearField,
        WEEK_OF_MONTH_FIELD         = kWeekOfMonthField,
        AM_PM_FIELD                 = kAmPmField,
        HOUR1_FIELD                 = kHour1Field,
        HOUR0_FIELD                 = kHour0Field,
        TIMEZONE_FIELD                 = kTimezoneField

    };

    enum EStyle
    {
        kFull,
        kLong,
        kMedium,
        kShort,

        kDefault     = kMedium,
        kDateOffset = 4,
        kNone         = -1,
        kDateTime     = 8,
        
               
        FULL        = kFull,
        LONG        = kLong,
        MEDIUM        = kMedium,
        SHORT        = kShort,
        DEFAULT        = kDefault,
        DATE_OFFSET    = kDateOffset,
        NONE        = kNone,
        DATE_TIME    = kDateTime
    };

    virtual ~DateFormat();

    virtual bool_t operator==(const Format&) const;

    virtual UnicodeString& format(const Formattable& obj,
                                  UnicodeString& toAppendTo,
                                  FieldPosition& pos,
                                  UErrorCode& status) const;

    virtual UnicodeString& format(  UDate date,
                                    UnicodeString& toAppendTo,
                                    FieldPosition& fieldPosition) const = 0;

    UnicodeString& format(UDate date, UnicodeString& result) const;

    UnicodeString& format(const Formattable& obj,
                          UnicodeString& result,
                          UErrorCode& status) const;

    virtual UDate parse( const UnicodeString& text,
                        UErrorCode& status) const;

    virtual UDate parse( const UnicodeString& text,
                        ParsePosition& pos) const = 0;

    virtual void parseObject(const UnicodeString& source,
                             Formattable& result,
                             ParsePosition& parse_pos) const;

    static DateFormat* createInstance(void);

    static DateFormat* createTimeInstance(EStyle style = kDefault,
                                          const Locale& aLocale = Locale::getDefault());

    static DateFormat* createDateInstance(EStyle style = kDefault,
                                          const Locale& aLocale = Locale::getDefault());

    static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault,
                                              EStyle timeStyle = kDefault,
                                              const Locale& aLocale = Locale::getDefault());

    static const Locale* getAvailableLocales(int32_t& count);
  
    virtual bool_t isLenient(void) const;

    virtual void setLenient(bool_t lenient);
    
    virtual const Calendar* getCalendar(void) const;
    
    virtual void adoptCalendar(Calendar* calendarToAdopt);

    virtual void setCalendar(const Calendar& newCalendar);

   
    virtual const NumberFormat* getNumberFormat(void) const;
    
    virtual void adoptNumberFormat(NumberFormat* formatToAdopt);

    virtual void setNumberFormat(const NumberFormat& newNumberFormat);

    virtual const TimeZone& getTimeZone(void) const;
    
    virtual void adoptTimeZone(TimeZone* zoneToAdopt);

    virtual void setTimeZone(const TimeZone& zone);

    
protected:
    DateFormat();

    DateFormat(const DateFormat&);

    DateFormat& operator=(const DateFormat&);

    Calendar* fCalendar;

    NumberFormat* fNumberFormat;

private:
    static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&);

    static int32_t          fgLocalesCount;

    static const Locale*    fgLocales;
};

inline UnicodeString&
DateFormat::format(const Formattable& obj,
                   UnicodeString& result,
                   UErrorCode& status) const {
    return Format::format(obj, result, status);
}

#endif // _DATEFMT
//eof

Generated at Thu Feb 10 15:30:34 2000 for icu by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999