Class CopticCalendar

All Implemented Interfaces:
Serializable, Comparable<CopticCalendar>, CalendarDate, ChronoDisplay, Temporal<CalendarDate>, LocalizedPatternSupport

@CalendarType("coptic") public final class CopticCalendar extends Calendrical<CopticCalendar.Unit,​CopticCalendar> implements LocalizedPatternSupport

Represents the calendar used by the Coptic church in Egypt.

Introduction

It is a solar calendar which defines years consisting of 13 months. The first 12 months are always 30 days long. The last month has 5 or 6 days depending if a Coptic year is a leap year or not. The leap year rule is the same as defined in Julian Calendar, namely every fourth year. Years are counted since the era of martyrs where the Julian year AD 284 is counted as Coptic year 1. See also Wikipedia. According to the book "Calendrical calculations" of Dershowitz/Reingold, the Coptic day starts at sunset on the previous day. Time4J will also assume that despite of the fact that the ancient Egypt calendar (the historic ancestor of the Coptic calendar) started the day at sunrise. We assume here an adaptation of the Coptic calendar to the habits of Islamic calendar in Egypt.

Following elements which are declared as constants are registered by this class

Furthermore, all elements defined in EpochDays and CommonElements are supported.

Example of usage

     ChronoFormatter<CopticCalendar> formatter =
       ChronoFormatter.setUp(CopticCalendar.axis(), Locale.ENGLISH)
       .addPattern("EEE, d. MMMM yyyy", PatternType.CLDR_DATE).build();
     PlainDate today = SystemClock.inLocalView().today();
     CopticCalendar copticDate = today.transform(CopticCalendar.class); // conversion at noon
     System.out.println(formatter.format(copticDate));
 

Support for unicode ca-extensions

      Locale locale = Locale.forLanguageTag("en-u-ca-coptic");
      ChronoFormatter<CalendarDate> f = ChronoFormatter.ofGenericCalendarStyle(DisplayMode.FULL, locale);
      assertThat(
          f.format(PlainDate.of(2017, 10, 1)),
          is("Sunday, Tout 21, 1734 A.M."));
 
Since:
3.11/4.8
Author:
Meno Hochschild
See Also:
Serialized Form
  • Field Details

  • Method Details

    • of

      public static CopticCalendar of(int cyear, CopticMonth cmonth, int cdom)

      Creates a new instance of a Coptic calendar date.

      Parameters:
      cyear - Coptic year in the range 1-9999
      cmonth - Coptic month
      cdom - Coptic day of month in range 1-30
      Returns:
      new instance of CopticCalendar
      Throws:
      IllegalArgumentException - in case of any inconsistencies
      Since:
      3.11/4.8
    • of

      public static CopticCalendar of(int cyear, int cmonth, int cdom)

      Creates a new instance of a Coptic calendar date.

      Parameters:
      cyear - Coptic year in the range 1-9999
      cmonth - Coptic monthin range 1-13
      cdom - Coptic day of month in range 1-30
      Returns:
      new instance of CopticCalendar
      Throws:
      IllegalArgumentException - in case of any inconsistencies
      Since:
      3.11/4.8
    • nowInSystemTime

      public static CopticCalendar nowInSystemTime()

      Obtains the current calendar date in system time.

      Convenient short-cut for: SystemClock.inLocalView().now(CopticCalendar.axis()). Attention: The Coptic calendar changes the date in the evening at 6 PM.

      Returns:
      current calendar date in system time zone using the system clock
      Since:
      3.23/4.19
      See Also:
      SystemClock.inLocalView(), ZonalClock.now(net.time4j.engine.Chronology)
    • getEra

      public CopticEra getEra()

      Yields the Coptic era.

      Returns:
      CopticEra.ANNO_MARTYRUM
      Since:
      3.11/4.8
    • getYear

      public int getYear()

      Yields the Coptic year.

      Returns:
      int
      Since:
      3.11/4.8
    • getMonth

      public CopticMonth getMonth()

      Yields the Coptic month.

      Returns:
      enum
      Since:
      3.11/4.8
    • getDayOfMonth

      public int getDayOfMonth()

      Yields the Coptic day of month.

      Returns:
      int
      Since:
      3.11/4.8
    • getDayOfWeek

      public Weekday getDayOfWeek()

      Determines the day of week.

      The Coptic calendar also uses a 7-day-week.

      Returns:
      Weekday
      Since:
      3.11/4.8
    • getDayOfYear

      public int getDayOfYear()

      Yields the Coptic day of year.

      Returns:
      int
      Since:
      3.11/4.8
    • lengthOfMonth

      public int lengthOfMonth()

      Yields the length of current Coptic month in days.

      Returns:
      int
      Since:
      3.11/4.8
    • lengthOfYear

      public int lengthOfYear()

      Yields the length of current Coptic year in days.

      Returns:
      int
      Since:
      3.11/4.8
    • isLeapYear

      public boolean isLeapYear()

      Is the year of this date a leap year?

      Returns:
      boolean
      Since:
      3.11/4.8
    • isValid

      public static boolean isValid(int yearOfEra, int month, int dayOfMonth)

      Queries if given parameter values form a well defined calendar date.

      Parameters:
      yearOfEra - the year of era to be checked
      month - the month to be checked
      dayOfMonth - the day of month to be checked
      Returns:
      true if valid else false
      Since:
      3.34/4.29
      See Also:
      of(int, int, int)
    • at

      Creates a new local timestamp with this date and given wall time.

      If the time T24:00 is used then the resulting timestamp will automatically be normalized such that the timestamp will contain the following day instead.

      Parameters:
      time - wall time
      Returns:
      general timestamp as composition of this date and given time
      Since:
      3.11/4.8
    • atTime

      public GeneralTimestamp<CopticCalendar> atTime(int hour, int minute)

      Is equivalent to at(PlainTime.of(hour, minute)).

      Parameters:
      hour - hour of day in range (0-24)
      minute - minute of hour in range (0-59)
      Returns:
      general timestamp as composition of this date and given time
      Throws:
      IllegalArgumentException - if any argument is out of range
      Since:
      3.11/4.8
    • equals

      public boolean equals(Object obj)
      Description copied from class: Calendrical

      Based on the epoch day number and the calendar system.

      In other words: Two date object are equal if they have the same temporal position on the local timeline and have the same calendrical type. Subclasses which define further state attributes must override this method.

      If an only temporal comparison is required then the method Calendrical.isSimultaneous(CalendarDate) is to be used.

      Overrides:
      equals in class Calendrical<CopticCalendar.Unit,​CopticCalendar>
      See Also:
      Chronology.getChronoType()
    • hashCode

      public int hashCode()
      Description copied from class: Calendrical

      Based on the epoch day number.

      Overrides:
      hashCode in class Calendrical<CopticCalendar.Unit,​CopticCalendar>
    • toString

      public String toString()
      Description copied from class: TimePoint

      Provides a complete textual representation of the state of this time point.

      The textual description often follows the conventions of ISO-8601. Usually the description starts with the chronological informations which are coarse-grained and ends with those ones which are fine-grained (for example the ISO-notation YYYY-MM-DD).

      Specified by:
      toString in class TimePoint<CopticCalendar.Unit,​CopticCalendar>
    • getDefaultWeekmodel

      public static Weekmodel getDefaultWeekmodel()

      Obtains the standard week model of this calendar.

      The Coptic calendar usually starts on Saturday.

      Returns:
      Weekmodel
      Since:
      3.24/4.20
    • axis

      public static TimeAxis<CopticCalendar.Unit,​CopticCalendar> axis()

      Returns the associated time axis.

      Returns:
      chronology
      Since:
      3.11/4.8