hodatime
Copyright(C) 2017 Jason Johnson
LicenseBSD-style (see the file LICENSE)
MaintainerJason Johnson <jason.johnson.081@gmail.com>
Stabilityexperimental
PortabilityPOSIX, Windows
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.HodaTime.Calendar.Julian

Description

This is the module for CalendarDate and CalendarDateTime in the Julian calendar. The Julian calendar has a simple leap year rule - every fourth year is a leap year, with none of the century exceptions that Gregorian later added to keep the calendar aligned to the solar year. Years use astronomical numbering, so year 1 is AD 1, year 0 is 1 BC, year -1 is 2 BC and so on; dates run from the calendar's introduction on 1.January.45 BC (year -44) onward, with no upper bound. Dates share the same absolute timeline as every other calendar, so in the modern era a Julian date reads 13 days behind the same instant's Gregorian date. The Julian calendar is not merely historical - the Eastern Orthodox churches still use it liturgically, so it stays useful for both past dates and current and future feast-day calculations.

Proleptic every-fourth-year rule

This implementation applies the clean every-fourth-year rule uniformly from 45 BC onward. It deliberately does not reproduce the calendar's messy early history, in which the priests who administered it inserted a leap day every three years by mistake (the "triennial error") until Augustus suspended leap years to realign it, the regular rule only settling in by around AD 8. We omit that for two reasons:

  • The exact sequence of long years during 45 BC - AD 7 is genuinely disputed: Scaliger, Ideler and Bennett each reconstruct it differently, so an "accurate" version would just bake one contested interpretation in as fact.
  • By long-standing convention historians and astronomers already cite ancient dates in the proleptic Julian calendar (the clean rule), precisely because the real sequence is uncertain. For example "15.March.44 BC" for Caesar's assassination is a proleptic Julian date; modelling the errors would make this library disagree with the way such dates are normally written.
Synopsis

Constructors

calendarDate :: DayOfMonth -> Month Julian -> Year -> Maybe (CalendarDate Julian) Source #

Smart constructor for a Julian calendar date.

fromNthDay :: DayNth -> DayOfWeek Julian -> Month Julian -> Year -> Maybe (CalendarDate Julian) Source #

Smart constructor for a Julian calendar date given as a day relative to a month (e.g. the third Monday of the month). Returns Nothing if the resulting date is invalid.

fromWeekDate :: WeekNumber -> DayOfWeek Julian -> Year -> Maybe (CalendarDate Julian) Source #

Smart constructor for a Julian calendar date given as a week date. Note that this method assumes weeks start on Sunday and the first week of the year is the one which has at least one day in the new year.

Types

data family Month cal Source #

Instances

Instances details
Bounded (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Bounded (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Bounded (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

minBound :: Month (Hebrew n) #

maxBound :: Month (Hebrew n) #

Bounded (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Bounded (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Bounded (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Enum (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Enum (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

KnownNumbering n => Enum (Month (Hebrew n)) Source #

The Month Enum is the one place the numbering shows: it is calendar order rotated so counting begins at the numbering's start month (numberingStart).

Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

succ :: Month (Hebrew n) -> Month (Hebrew n) #

pred :: Month (Hebrew n) -> Month (Hebrew n) #

toEnum :: Int -> Month (Hebrew n) #

fromEnum :: Month (Hebrew n) -> Int #

enumFrom :: Month (Hebrew n) -> [Month (Hebrew n)] #

enumFromThen :: Month (Hebrew n) -> Month (Hebrew n) -> [Month (Hebrew n)] #

enumFromTo :: Month (Hebrew n) -> Month (Hebrew n) -> [Month (Hebrew n)] #

enumFromThenTo :: Month (Hebrew n) -> Month (Hebrew n) -> Month (Hebrew n) -> [Month (Hebrew n)] #

Enum (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Enum (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Enum (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Read (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Read (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Read (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Read (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Read (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Read (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Show (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Show (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Show (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

showsPrec :: Int -> Month (Hebrew n) -> ShowS #

show :: Month (Hebrew n) -> String #

showList :: [Month (Hebrew n)] -> ShowS #

Show (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Methods

showsPrec :: Int -> Month (Islamic l) -> ShowS #

show :: Month (Islamic l) -> String #

showList :: [Month (Islamic l)] -> ShowS #

Show (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Show (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

NFData (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Methods

rnf :: Month Coptic -> () #

NFData (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Methods

rnf :: Month Gregorian -> () #

NFData (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

rnf :: Month (Hebrew n) -> () #

NFData (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Methods

rnf :: Month (Islamic l) -> () #

NFData (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Methods

rnf :: Month Julian -> () #

NFData (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Methods

rnf :: Month Persian -> () #

Eq (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Eq (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Eq (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

(==) :: Month (Hebrew n) -> Month (Hebrew n) -> Bool #

(/=) :: Month (Hebrew n) -> Month (Hebrew n) -> Bool #

Eq (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Methods

(==) :: Month (Islamic l) -> Month (Islamic l) -> Bool #

(/=) :: Month (Islamic l) -> Month (Islamic l) -> Bool #

Eq (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Eq (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Ord (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Ord (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Ord (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

compare :: Month (Hebrew n) -> Month (Hebrew n) -> Ordering #

(<) :: Month (Hebrew n) -> Month (Hebrew n) -> Bool #

(<=) :: Month (Hebrew n) -> Month (Hebrew n) -> Bool #

(>) :: Month (Hebrew n) -> Month (Hebrew n) -> Bool #

(>=) :: Month (Hebrew n) -> Month (Hebrew n) -> Bool #

max :: Month (Hebrew n) -> Month (Hebrew n) -> Month (Hebrew n) #

min :: Month (Hebrew n) -> Month (Hebrew n) -> Month (Hebrew n) #

Ord (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Methods

compare :: Month (Islamic l) -> Month (Islamic l) -> Ordering #

(<) :: Month (Islamic l) -> Month (Islamic l) -> Bool #

(<=) :: Month (Islamic l) -> Month (Islamic l) -> Bool #

(>) :: Month (Islamic l) -> Month (Islamic l) -> Bool #

(>=) :: Month (Islamic l) -> Month (Islamic l) -> Bool #

max :: Month (Islamic l) -> Month (Islamic l) -> Month (Islamic l) #

min :: Month (Islamic l) -> Month (Islamic l) -> Month (Islamic l) #

Ord (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Ord (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Hashable (Month Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Hashable (Month Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

KnownNumbering n => Hashable (Month (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

hashWithSalt :: Int -> Month (Hebrew n) -> Int #

hash :: Month (Hebrew n) -> Int #

Hashable (Month (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Methods

hashWithSalt :: Int -> Month (Islamic l) -> Int #

hash :: Month (Islamic l) -> Int #

Hashable (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Hashable (Month Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

data Month Coptic Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

data Month Gregorian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

data Month Julian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

data Month Persian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

data Month (Hebrew n) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

data Month (Islamic l) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

data family DayOfWeek cal Source #

Instances

Instances details
Bounded (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Bounded (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Bounded (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Bounded (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Bounded (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Bounded (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Enum (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Enum (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Enum (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Enum (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Enum (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Enum (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Read (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Read (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Read (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Read (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Read (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Read (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Show (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Show (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Show (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Show (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Show (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Show (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

NFData (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Methods

rnf :: DayOfWeek Coptic -> () #

NFData (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Methods

rnf :: DayOfWeek Gregorian -> () #

NFData (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

rnf :: DayOfWeek (Hebrew n) -> () #

NFData (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Methods

rnf :: DayOfWeek (Islamic l) -> () #

NFData (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Methods

rnf :: DayOfWeek Julian -> () #

NFData (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Methods

rnf :: DayOfWeek Persian -> () #

Eq (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Eq (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Eq (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

(==) :: DayOfWeek (Hebrew n) -> DayOfWeek (Hebrew n) -> Bool #

(/=) :: DayOfWeek (Hebrew n) -> DayOfWeek (Hebrew n) -> Bool #

Eq (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Eq (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Eq (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Ord (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Ord (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Ord (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Ord (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Ord (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Ord (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

Hashable (DayOfWeek Coptic) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

Hashable (DayOfWeek Gregorian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

Hashable (DayOfWeek (Hebrew n)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

Methods

hashWithSalt :: Int -> DayOfWeek (Hebrew n) -> Int #

hash :: DayOfWeek (Hebrew n) -> Int #

Hashable (DayOfWeek (Islamic l)) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

Hashable (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Hashable (DayOfWeek Persian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

data DayOfWeek Coptic Source # 
Instance details

Defined in Data.HodaTime.Calendar.Coptic

data DayOfWeek Gregorian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Gregorian.Internal

data DayOfWeek Julian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

data DayOfWeek Persian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Persian

data DayOfWeek (Hebrew n) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Hebrew

data DayOfWeek (Islamic l) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Islamic

data Julian Source #

Instances

Instances details
IsCalendar Julian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Associated Types

data Date Julian

data DayOfWeek Julian Source #

data Month Julian Source #

Methods

fromDays :: Int32 -> Date Julian

toDays :: Date Julian -> Int32

toYmd :: Date Julian -> (Int32, Word8, Word8)

calendarName :: Date Julian -> String

day' :: Date Julian -> DayOfMonth

setDay' :: DayOfMonth -> Date Julian -> Date Julian

month' :: Date Julian -> Month Julian

setMonthIndex' :: Int -> Date Julian -> Date Julian

year' :: Date Julian -> Year

setYear' :: Year -> Date Julian -> Date Julian

dayOfWeek' :: Date Julian -> DayOfWeek Julian

next' :: Int -> DayOfWeek Julian -> Date Julian -> Date Julian

previous' :: Int -> DayOfWeek Julian -> Date Julian -> Date Julian

Bounded (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Bounded (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Enum (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Enum (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Read (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Read (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Show (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Show (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

NFData (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Methods

rnf :: DayOfWeek Julian -> () #

NFData (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Methods

rnf :: Month Julian -> () #

Eq (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Eq (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Ord (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Ord (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Hashable (DayOfWeek Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

Hashable (Month Julian) Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

data DayOfWeek Julian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian

data Month Julian Source # 
Instance details

Defined in Data.HodaTime.Calendar.Julian