Class CopticCalendar
- All Implemented Interfaces:
Serializable
,Comparable<CopticCalendar>
,CalendarDate
,ChronoDisplay
,Temporal<CalendarDate>
,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
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Defines some calendar units for the Coptic calendar. -
Field Summary
Modifier and TypeFieldDescriptionstatic StdCalendarElement<Integer,CopticCalendar>
Represents the Coptic day of month.static StdCalendarElement<Weekday,CopticCalendar>
Represents the Coptic day of week.static StdCalendarElement<Integer,CopticCalendar>
Represents the Coptic day of year.static ChronoElement<CopticEra>
Represents the Coptic era.static StdCalendarElement<CopticMonth,CopticCalendar>
Represents the Coptic month.static OrdinalWeekdayElement<CopticCalendar>
Element with the ordinal day-of-week within given calendar month.static StdCalendarElement<Integer,CopticCalendar>
Represents the Coptic year. -
Method Summary
Modifier and TypeMethodDescriptionCreates a new local timestamp with this date and given wall time.atTime(int hour, int minute)
Is equivalent toat(PlainTime.of(hour, minute))
.static TimeAxis<CopticCalendar.Unit,CopticCalendar>
axis()
Returns the associated time axis.boolean
Based on the epoch day number and the calendar system.int
Yields the Coptic day of month.Determines the day of week.int
Yields the Coptic day of year.static Weekmodel
Obtains the standard week model of this calendar.getEra()
Yields the Coptic era.getMonth()
Yields the Coptic month.int
getYear()
Yields the Coptic year.int
hashCode()
Based on the epoch day number.boolean
Is the year of this date a leap year?static boolean
isValid(int yearOfEra, int month, int dayOfMonth)
Queries if given parameter values form a well defined calendar date.int
Yields the length of current Coptic month in days.int
Yields the length of current Coptic year in days.static CopticCalendar
Obtains the current calendar date in system time.static CopticCalendar
of(int cyear, int cmonth, int cdom)
Creates a new instance of a Coptic calendar date.static CopticCalendar
of(int cyear, CopticMonth cmonth, int cdom)
Creates a new instance of a Coptic calendar date.toString()
Provides a complete textual representation of the state of this time point.Methods inherited from class net.time4j.engine.Calendrical
compareTo, getDaysSinceEpochUTC, isAfter, isBefore, isSimultaneous, minus, plus
Methods inherited from class net.time4j.engine.TimePoint
max, min, minus, minus, plus, plus, until, until
Methods inherited from class net.time4j.engine.ChronoEntity
contains, get, get, getInt, getMaximum, getMinimum, getRegisteredElements, getTimezone, hasTimezone, isValid, isValid, isValid, matches, with, with, with, with
Methods inherited from interface net.time4j.engine.CalendarDate
transform, transform, transform, transform, transform, transform
Methods inherited from interface net.time4j.format.LocalizedPatternSupport
getFormatPattern, getFormatPattern, useDynamicFormatPattern
Methods inherited from interface net.time4j.engine.Temporal
isAfterAll, isAfterOrEqual, isBeforeAll, isBeforeOrEqual
-
Field Details
-
ERA
Represents the Coptic era.
-
YEAR_OF_ERA
@FormattableElement(format="y") public static final StdCalendarElement<Integer,CopticCalendar> YEAR_OF_ERARepresents the Coptic year.
-
MONTH_OF_YEAR
@FormattableElement(format="M", alt="L") public static final StdCalendarElement<CopticMonth,CopticCalendar> MONTH_OF_YEARRepresents the Coptic month.
-
DAY_OF_MONTH
@FormattableElement(format="d") public static final StdCalendarElement<Integer,CopticCalendar> DAY_OF_MONTHRepresents the Coptic day of month.
-
DAY_OF_YEAR
@FormattableElement(format="D") public static final StdCalendarElement<Integer,CopticCalendar> DAY_OF_YEARRepresents the Coptic day of year.
-
DAY_OF_WEEK
@FormattableElement(format="E") public static final StdCalendarElement<Weekday,CopticCalendar> DAY_OF_WEEKRepresents the Coptic day of week.
If the day-of-week is set to a new value then Time4J handles the Coptic calendar week as starting on Saturday (like in Egypt).
-
WEEKDAY_IN_MONTH
@FormattableElement(format="F") public static final OrdinalWeekdayElement<CopticCalendar> WEEKDAY_IN_MONTHElement with the ordinal day-of-week within given calendar month.
-
-
Method Details
-
of
Creates a new instance of a Coptic calendar date.
- Parameters:
cyear
- Coptic year in the range 1-9999cmonth
- Coptic monthcdom
- 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
Creates a new instance of a Coptic calendar date.
- Parameters:
cyear
- Coptic year in the range 1-9999cmonth
- Coptic monthin range 1-13cdom
- 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
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
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
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
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 checkedmonth
- the month to be checkeddayOfMonth
- the day of month to be checked- Returns:
true
if valid elsefalse
- 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
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
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 classCalendrical<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 classCalendrical<CopticCalendar.Unit,CopticCalendar>
-
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 classTimePoint<CopticCalendar.Unit,CopticCalendar>
-
getDefaultWeekmodel
Obtains the standard week model of this calendar.
The Coptic calendar usually starts on Saturday.
- Returns:
- Weekmodel
- Since:
- 3.24/4.20
-
axis
Returns the associated time axis.
- Returns:
- chronology
- Since:
- 3.11/4.8
-