Calendar month. January = 1
Modulethyme-0.4.1Haskell2010
Data.Thyme.Calendar.MonthDay
Calendar months and day-of-months.
- 3 types
- 8 values
- Packagethyme-0.4.1
- Exports11
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceMonthDay.hs
Calendar day-of-month, starting from 1.
A strict pair of a Month and a DayOfMonth.
Constructors
MonthDaymdMonth :: !MonthmdDay :: !DayOfMonth
Instances19Bounded, Eq, Data, Ord, Show, Generic, …
Bounded MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalEq MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalData MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalOrd MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalShow MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalGeneric MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalNFData MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalRandom MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalArbitrary MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalCoArbitrary MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalHashable MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalUnbox MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalFormatTime MonthDayDefined in thyme-0.4.1 · Data.Thyme.FormatParseTime MonthDayDefined in thyme-0.4.1 · Data.Thyme.FormatMVector MVector MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.InternalVector Vector MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.Internaltype Rep MonthDay = D1 ('MetaDataDefined in thyme-0.4.1 · Data.Thyme.Calendar.Internal"MonthDay"
"Data.Thyme.Calendar.Internal"
"thyme-0.4.1-8dXOglKrqmj4dXkxwF5pRL"
'False) (C1 ('MetaCons"MonthDay"
'PrefixI 'True) (S1 ('MetaSel ('Just"mdMonth"
) 'SourceUnpack 'SourceStrict 'DecidedUnpack) (Rec0 Month) :*: S1 ('MetaSel ('Just"mdDay"
) 'SourceUnpack 'SourceStrict 'DecidedUnpack) (Rec0 DayOfMonth)))data MVector s MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.Internaldata Vector MonthDayDefined in thyme-0.4.1 · Data.Thyme.Calendar.Internal
Predicated on whether or not it's a leap year, convert between an ordinal DayOfYear and the corresponding Month and DayOfMonth.
> 60 ^. monthDay (isLeapYear 2015)
MonthDay {mdMonth = 3, mdDay = 1}
> 60 ^. monthDay (isLeapYear 2016)
MonthDay {mdMonth = 2, mdDay = 29}
> monthDay (isLeapYear 2016) # MonthDay 2 29
60
> monthDay (isLeapYear 2015) # MonthDay 2 28
59
Note that monthDay is an improper Iso, as the following example
shows. To handle this case correctly, use monthDayValid.
> monthDay (isLeapYear 2015) # MonthDay 2 29
59
Predicated on whether or not it's a leap year, convert a MonthDay to an ordinal DayOfYear.
> monthDayValid (isLeapYear 2016) (MonthDay 2 29)
Just 60
> monthDayValid (isLeapYear 2015) (MonthDay 2 29)
Nothing
Predicated on whether or not the year is a leap year, return the number of Days in the given Month.
> monthLength (isLeapYear 2015) 2
28
> monthLength (isLeapYear 2016) 2
29
Predicated on whether or not it is a leap year, convert an ordinal DayOfYear to its corresponding Month and DayOfMonth.
dayOfYearToMonthAndDay leap (view (monthDay leap) -> MonthDay m d) = (m, d)
Predicated on whether or not it is a leap year, convert a Month and DayOfMonth to its corresponding ordinal DayOfYear. Does not validate the input.
monthAndDayToDayOfYear leap m d = monthDay leap # MonthDay m d
Predicated on whether or not it is a leap year, convert a Month and DayOfMonth to its corresponding ordinal DayOfYear. Returns Nothing for invalid input.
monthAndDayToDayOfYearValid leap m d = monthDayValid leap (MonthDay m d)