Class BuddhistCalendar

  • All Implemented Interfaces:
    Serializable, Cloneable, Comparable<Calendar>

    public class BuddhistCalendar
    extends GregorianCalendar
    BuddhistCalendar is a subclass of GregorianCalendar that numbers years since the birth of the Buddha. This is the civil calendar in some predominantly Buddhist countries such as Thailand, and it is used for religious purposes elsewhere.

    The Buddhist calendar is identical to the Gregorian calendar in all respects except for the year and era. Years are numbered since the birth of the Buddha in 543 BC (Gregorian), so that 1 AD (Gregorian) is equivalent to 544 BE (Buddhist Era) and 1998 AD is 2541 BE.

    The Buddhist Calendar has only one allowable era: BE. If the calendar is not in lenient mode (see setLenient), dates before 1/1/1 BE are rejected with an IllegalArgumentException.

    This class should not be subclassed.

    BuddhistCalendar usually should be instantiated using Calendar.getInstance(ULocale) passing in a ULocale with the tag "@calendar=buddhist".

    Author:
    Laura Werner, Alan Liu
    See Also:
    Calendar, GregorianCalendar, Serialized Form
    • Field Detail

      • BE

        public static final int BE
        Constant for the Buddhist Era. This is the only allowable ERA value for the Buddhist calendar.
        See Also:
        Calendar.ERA, Constant Field Values
    • Constructor Detail

      • BuddhistCalendar

        public BuddhistCalendar()
        Constructs a BuddhistCalendar using the current time in the default time zone with the default locale.
      • BuddhistCalendar

        public BuddhistCalendar​(TimeZone zone)
        Constructs a BuddhistCalendar based on the current time in the given time zone with the default locale.
        Parameters:
        zone - the given time zone.
      • BuddhistCalendar

        public BuddhistCalendar​(Locale aLocale)
        Constructs a BuddhistCalendar based on the current time in the default time zone with the given locale.
        Parameters:
        aLocale - the given locale.
      • BuddhistCalendar

        public BuddhistCalendar​(ULocale locale)
        Constructs a BuddhistCalendar based on the current time in the default time zone with the given locale.
        Parameters:
        locale - the given ulocale.
      • BuddhistCalendar

        public BuddhistCalendar​(TimeZone zone,
                                Locale aLocale)
        Constructs a BuddhistCalendar based on the current time in the given time zone with the given locale.
        Parameters:
        zone - the given time zone.
        aLocale - the given locale.
      • BuddhistCalendar

        public BuddhistCalendar​(TimeZone zone,
                                ULocale locale)
        Constructs a BuddhistCalendar based on the current time in the given time zone with the given locale.
        Parameters:
        zone - the given time zone.
        locale - the given ulocale.
      • BuddhistCalendar

        public BuddhistCalendar​(Date date)
        Constructs a BuddhistCalendar with the given date set in the default time zone with the default locale.
        Parameters:
        date - The date to which the new calendar is set.
      • BuddhistCalendar

        public BuddhistCalendar​(int year,
                                int month,
                                int date)
        Constructs a BuddhistCalendar with the given date set in the default time zone with the default locale.
        Parameters:
        year - The value used to set the calendar's YEAR time field.
        month - The value used to set the calendar's MONTH time field. The value is 0-based. e.g., 0 for January.
        date - The value used to set the calendar's DATE time field.
      • BuddhistCalendar

        public BuddhistCalendar​(int year,
                                int month,
                                int date,
                                int hour,
                                int minute,
                                int second)
        Constructs a BuddhistCalendar with the given date and time set for the default time zone with the default locale.
        Parameters:
        year - The value used to set the calendar's YEAR time field.
        month - The value used to set the calendar's MONTH time field. The value is 0-based. e.g., 0 for January.
        date - The value used to set the calendar's DATE time field.
        hour - The value used to set the calendar's HOUR_OF_DAY time field.
        minute - The value used to set the calendar's MINUTE time field.
        second - The value used to set the calendar's SECOND time field.
    • Method Detail

      • handleGetExtendedYear

        protected int handleGetExtendedYear()
        Description copied from class: Calendar
        Returns the extended year defined by the current fields. This will use the EXTENDED_YEAR field or the YEAR and supra-year fields (such as ERA) specific to the calendar system, depending on which set of fields is newer.
        Overrides:
        handleGetExtendedYear in class GregorianCalendar
        Returns:
        the extended year
      • handleComputeMonthStart

        protected int handleComputeMonthStart​(int eyear,
                                              int month,
                                              boolean useMonth)
        Description copied from class: GregorianCalendar
        Return JD of start of given month/year
        Overrides:
        handleComputeMonthStart in class GregorianCalendar
        Parameters:
        eyear - the extended year
        month - the zero-based month, or 0 if useMonth is false
        useMonth - if false, compute the day before the first day of the given year, otherwise, compute the day before the first day of the given month
        Returns:
        the Julian day number of the day before the first day of the given month and year
      • handleComputeFields

        protected void handleComputeFields​(int julianDay)
        Description copied from class: GregorianCalendar
        Override Calendar to compute several fields specific to the hybrid Gregorian-Julian calendar system. These are:
        • ERA
        • YEAR
        • MONTH
        • DAY_OF_MONTH
        • DAY_OF_YEAR
        • EXTENDED_YEAR
        Overrides:
        handleComputeFields in class GregorianCalendar
      • handleGetLimit

        protected int handleGetLimit​(int field,
                                     int limitType)
        Override GregorianCalendar. There is only one Buddhist ERA. We should really handle YEAR, YEAR_WOY, and EXTENDED_YEAR here too to implement the 1..5000000 range, but it's not critical.
        Overrides:
        handleGetLimit in class GregorianCalendar
        Parameters:
        field - one of the above field numbers
        limitType - one of MINIMUM, GREATEST_MINIMUM, LEAST_MAXIMUM, or MAXIMUM
      • getType

        public String getType()
        Returns the calendar type name string for this Calendar object. The returned string is the legacy ICU calendar attribute value, for example, "gregorian" or "japanese".

        See type="old type name" for the calendar attribute of locale IDs at http://www.unicode.org/reports/tr35/#Key_Type_Definitions

        Overrides:
        getType in class GregorianCalendar
        Returns:
        legacy calendar type name string