ICU 55.1  55.1
gregocal.h
Go to the documentation of this file.
1 /*
2 * Copyright (C) 1997-2013, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 ********************************************************************************
5 *
6 * File GREGOCAL.H
7 *
8 * Modification History:
9 *
10 * Date Name Description
11 * 04/22/97 aliu Overhauled header.
12 * 07/28/98 stephen Sync with JDK 1.2
13 * 09/04/98 stephen Re-sync with JDK 8/31 putback
14 * 09/14/98 stephen Changed type of kOneDay, kOneWeek to double.
15 * Fixed bug in roll()
16 * 10/15/99 aliu Fixed j31, incorrect WEEK_OF_YEAR computation.
17 * Added documentation of WEEK_OF_YEAR computation.
18 * 10/15/99 aliu Fixed j32, cannot set date to Feb 29 2000 AD.
19 * {JDK bug 4210209 4209272}
20 * 11/07/2003 srl Update, clean up documentation.
21 ********************************************************************************
22 */
23 
24 #ifndef GREGOCAL_H
25 #define GREGOCAL_H
26 
27 #include "unicode/utypes.h"
28 
29 #if !UCONFIG_NO_FORMATTING
30 
31 #include "unicode/calendar.h"
32 
39 
150 public:
151 
156  enum EEras {
157  BC,
158  AD
159  };
160 
170 
181  GregorianCalendar(TimeZone* zoneToAdopt, UErrorCode& success);
182 
192  GregorianCalendar(const TimeZone& zone, UErrorCode& success);
193 
203  GregorianCalendar(const Locale& aLocale, UErrorCode& success);
204 
216  GregorianCalendar(TimeZone* zoneToAdopt, const Locale& aLocale, UErrorCode& success);
217 
228  GregorianCalendar(const TimeZone& zone, const Locale& aLocale, UErrorCode& success);
229 
242  GregorianCalendar(int32_t year, int32_t month, int32_t date, UErrorCode& success);
243 
258  GregorianCalendar(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, UErrorCode& success);
259 
275  GregorianCalendar(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second, UErrorCode& success);
276 
282 
289 
296 
302  virtual Calendar* clone(void) const;
303 
313  void setGregorianChange(UDate date, UErrorCode& success);
314 
324 
340  UBool isLeapYear(int32_t year) const;
341 
349  virtual UBool isEquivalentTo(const Calendar& other) const;
350 
362  virtual void roll(EDateFields field, int32_t amount, UErrorCode& status);
363 
375  virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status);
376 
377 #ifndef U_HIDE_DEPRECATED_API
378 
385  int32_t getActualMinimum(EDateFields field) const;
386 
395  int32_t getActualMinimum(EDateFields field, UErrorCode& status) const;
396 #endif /* U_HIDE_DEPRECATED_API */
397 
406  int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const;
407 
408 #ifndef U_HIDE_DEPRECATED_API
409 
418  int32_t getActualMaximum(EDateFields field) const;
419 #endif /* U_HIDE_DEPRECATED_API */
420 
431  virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const;
432 
442  virtual UBool inDaylightTime(UErrorCode& status) const;
443 
444 public:
445 
456  virtual UClassID getDynamicClassID(void) const;
457 
469  static UClassID U_EXPORT2 getStaticClassID(void);
470 
481  virtual const char * getType() const;
482 
483  private:
484  GregorianCalendar(); // default constructor not implemented
485 
486  protected:
493  virtual int32_t internalGetEra() const;
494 
508  virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
509  UBool useMonth) const;
510 
519  virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) ;
520 
528  virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const;
529 
537  virtual int32_t handleGetYearLength(int32_t eyear) const;
538 
545  virtual int32_t monthLength(int32_t month) const;
546 
554  virtual int32_t monthLength(int32_t month, int32_t year) const;
555 
556 #ifndef U_HIDE_INTERNAL_API
557 
563  int32_t yearLength(int32_t year) const;
564 
570  int32_t yearLength(void) const;
571 
579  void pinDayOfMonth(void);
580 #endif /* U_HIDE_INTERNAL_API */
581 
589  virtual UDate getEpochDay(UErrorCode& status);
590 
612  virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
613 
622  virtual int32_t handleGetExtendedYear();
623 
632  virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
633 
634 
650  virtual void handleComputeFields(int32_t julianDay, UErrorCode &status);
651 
652  private:
660  static double computeJulianDayOfYear(UBool isGregorian, int32_t year,
661  UBool& isLeap);
662 
667  UBool validateFields(void) const;
668 
672  UBool boundsCheck(int32_t value, UCalendarDateFields field) const;
673 
683  int32_t aggregateStamp(int32_t stamp_a, int32_t stamp_b);
684 
692  UDate fGregorianCutover;
693 
697  int32_t fCutoverJulianDay;
698 
704  UDate fNormalizedGregorianCutover;// = gregorianCutover;
705 
710  int32_t fGregorianCutoverYear;// = 1582;
711 
716  int32_t fGregorianCutoverJulianDay;// = 2299161;
717 
725  static double millisToJulianDay(UDate millis);
726 
734  static UDate julianDayToMillis(double julian);
735 
740  UBool fIsGregorian;
741 
747  UBool fInvertGregorian;
748 
749 
750  public: // internal implementation
751 
756  virtual UBool haveDefaultCentury() const;
757 
762  virtual UDate defaultCenturyStart() const;
763 
768  virtual int32_t defaultCenturyStartYear() const;
769 };
770 
772 
773 #endif /* #if !UCONFIG_NO_FORMATTING */
774 
775 #endif // _GREGOCAL
776 //eof
777 
icu::GregorianCalendar::handleGetMonthLength
virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const
Return the number of days in the given month of the given extended year of this calendar system.
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, UErrorCode &success)
Constructs a GregorianCalendar with the given AD date and time set for the default time zone with the...
icu::GregorianCalendar::defaultCenturyStart
virtual UDate defaultCenturyStart() const
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(const Locale &aLocale, UErrorCode &success)
Constructs a GregorianCalendar based on the current time in the default time zone with the given loca...
icu::Calendar::ELimitType
ELimitType
Limit enums.
Definition: calendar.h:1608
icu::GregorianCalendar::handleGetLimit
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const
Subclass API for defining limits of different types.
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
icu::GregorianCalendar::getDynamicClassID
virtual UClassID getDynamicClassID(void) const
Override Calendar Returns a unique class ID POLYMORPHICALLY.
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(const TimeZone &zone, const Locale &aLocale, UErrorCode &success)
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale...
U_I18N_API
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:358
icu::Calendar
Calendar is an abstract base class for converting between a UDate object and a set of integer fields ...
Definition: calendar.h:200
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
icu::GregorianCalendar::~GregorianCalendar
virtual ~GregorianCalendar()
Destructor.
icu::GregorianCalendar::monthLength
virtual int32_t monthLength(int32_t month) const
return the length of the given month.
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(UErrorCode &success)
Constructs a default GregorianCalendar using the current time in the default time zone with the defau...
icu::TimeZone
TimeZone represents a time zone offset, and also figures out daylight savings.
Definition: timezone.h:129
icu::GregorianCalendar::getEpochDay
virtual UDate getEpochDay(UErrorCode &status)
Return the day number with respect to the epoch.
icu::GregorianCalendar::clone
virtual Calendar * clone(void) const
Create and return a polymorphic copy of this calendar.
icu::GregorianCalendar::handleGetExtendedYearFromWeekFields
virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy)
Subclasses may override this to convert from week fields (YEAR_WOY and WEEK_OF_YEAR) to an extended y...
icu::GregorianCalendar::defaultCenturyStartYear
virtual int32_t defaultCenturyStartYear() const
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(const GregorianCalendar &source)
Copy constructor.
icu::GregorianCalendar::inDaylightTime
virtual UBool inDaylightTime(UErrorCode &status) const
(Overrides Calendar) Return true if the current date for this Calendar is in Daylight Savings Time.
icu::GregorianCalendar::handleComputeJulianDay
virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField)
Subclasses may override this.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
UErrorCode
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:476
icu::GregorianCalendar::isEquivalentTo
virtual UBool isEquivalentTo(const Calendar &other) const
Returns TRUE if the given Calendar object is equivalent to this one.
icu::GregorianCalendar::getActualMinimum
int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const
Return the minimum value that this field could have, given the current date.
icu::GregorianCalendar::roll
virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode &status)
(Overrides Calendar) Rolls up or down by the given amount in the specified field.
icu::GregorianCalendar::getGregorianChange
UDate getGregorianChange(void) const
Gets the Gregorian Calendar change date.
icu::GregorianCalendar::isLeapYear
UBool isLeapYear(int32_t year) const
Return true if the given year is a leap year.
icu::GregorianCalendar::handleComputeMonthStart
virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const
Return the Julian day number of day before the first day of the given month in the given extended yea...
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second, UErrorCode &success)
Constructs a GregorianCalendar with the given AD date and time set for the default time zone with the...
icu::GregorianCalendar::yearLength
int32_t yearLength(void) const
return the length of the year field.
icu::GregorianCalendar::pinDayOfMonth
void pinDayOfMonth(void)
After adjustments such as add(MONTH), add(YEAR), we don't want the month to jump around.
icu::GregorianCalendar
Concrete class which provides the standard calendar used by most of the world.
Definition: gregocal.h:149
calendar.h
C++ API: Calendar object.
icu::GregorianCalendar::internalGetEra
virtual int32_t internalGetEra() const
Return the ERA.
icu::GregorianCalendar::EEras
EEras
Useful constants for GregorianCalendar and TimeZone.
Definition: gregocal.h:156
icu::GregorianCalendar::getActualMinimum
int32_t getActualMinimum(EDateFields field) const
Return the minimum value that this field could have, given the current date.
icu::GregorianCalendar::getActualMaximum
virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode &status) const
Return the maximum value that this field could have, given the current date.
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(const TimeZone &zone, UErrorCode &success)
Constructs a GregorianCalendar based on the current time in the given time zone with the default loca...
icu::GregorianCalendar::getActualMinimum
int32_t getActualMinimum(EDateFields field, UErrorCode &status) const
Return the minimum value that this field could have, given the current date.
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(int32_t year, int32_t month, int32_t date, UErrorCode &success)
Constructs a GregorianCalendar with the given AD date set in the default time zone with the default l...
UDate
double UDate
Date and Time data type.
Definition: utypes.h:201
icu::GregorianCalendar::operator=
GregorianCalendar & operator=(const GregorianCalendar &right)
Default assignment operator.
icu::GregorianCalendar::getActualMaximum
int32_t getActualMaximum(EDateFields field) const
Return the maximum value that this field could have, given the current date.
icu::GregorianCalendar::setGregorianChange
void setGregorianChange(UDate date, UErrorCode &success)
Sets the GregorianCalendar change date.
icu::GregorianCalendar::handleGetExtendedYear
virtual int32_t handleGetExtendedYear()
Return the extended year defined by the current fields.
icu::GregorianCalendar::haveDefaultCentury
virtual UBool haveDefaultCentury() const
UCalendarDateFields
UCalendarDateFields
Possible fields in a UCalendar.
Definition: ucal.h:183
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(TimeZone *zoneToAdopt, UErrorCode &success)
Constructs a GregorianCalendar based on the current time in the given time zone with the default loca...
icu::GregorianCalendar::getType
virtual const char * getType() const
Returns the calendar type name string for this Calendar object.
icu::GregorianCalendar::yearLength
int32_t yearLength(int32_t year) const
return the length of the given year.
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
icu::GregorianCalendar::handleGetYearLength
virtual int32_t handleGetYearLength(int32_t eyear) const
Return the number of days in the given extended year of this calendar system.
icu::Calendar::EDateFields
EDateFields
Field IDs for date and time.
Definition: calendar.h:209
icu::GregorianCalendar::monthLength
virtual int32_t monthLength(int32_t month, int32_t year) const
return the length of the month according to the given year.
icu::Locale
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185
icu::GregorianCalendar::handleComputeFields
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status)
Subclasses may override this method to compute several fields specific to each calendar system.
icu::GregorianCalendar::roll
virtual void roll(EDateFields field, int32_t amount, UErrorCode &status)
(Overrides Calendar) Rolls up or down by the given amount in the specified field.
icu::GregorianCalendar::GregorianCalendar
GregorianCalendar(TimeZone *zoneToAdopt, const Locale &aLocale, UErrorCode &success)
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale...
icu::GregorianCalendar::getStaticClassID
static UClassID getStaticClassID(void)
Return the class ID for this class.