thyme-0.4: A faster time library
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Thyme.Calendar.MonthDay

Description

Calendar months and day-of-months.

Synopsis

Documentation

type Month = Int Source #

Calendar month. January = 1

type DayOfMonth = Int Source #

Calendar day-of-month, starting from 1.

data MonthDay Source #

A strict pair of a Month and a DayOfMonth.

Constructors

MonthDay 

Fields

Instances

Instances details
Arbitrary MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

CoArbitrary MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

coarbitrary :: MonthDay -> Gen b -> Gen b #

Data MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MonthDay -> c MonthDay #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MonthDay #

toConstr :: MonthDay -> Constr #

dataTypeOf :: MonthDay -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MonthDay) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MonthDay) #

gmapT :: (forall b. Data b => b -> b) -> MonthDay -> MonthDay #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MonthDay -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MonthDay -> r #

gmapQ :: (forall d. Data d => d -> u) -> MonthDay -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> MonthDay -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> MonthDay -> m MonthDay #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> MonthDay -> m MonthDay #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> MonthDay -> m MonthDay #

Bounded MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Generic MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Associated Types

type Rep MonthDay :: Type -> Type #

Methods

from :: MonthDay -> Rep MonthDay x #

to :: Rep MonthDay x -> MonthDay #

Show MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

NFData MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

rnf :: MonthDay -> () #

Eq MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Ord MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Hashable MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

hashWithSalt :: Int -> MonthDay -> Int #

hash :: MonthDay -> Int #

Random MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

randomR :: RandomGen g => (MonthDay, MonthDay) -> g -> (MonthDay, g) #

random :: RandomGen g => g -> (MonthDay, g) #

randomRs :: RandomGen g => (MonthDay, MonthDay) -> g -> [MonthDay] #

randoms :: RandomGen g => g -> [MonthDay] #

FormatTime MonthDay Source # 
Instance details

Defined in Data.Thyme.Format

Methods

showsTime :: TimeLocale -> MonthDay -> (Char -> ShowS) -> Char -> ShowS Source #

ParseTime MonthDay Source # 
Instance details

Defined in Data.Thyme.Format

Unbox MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Vector Vector MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

MVector MVector MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep MonthDay = D1 ('MetaData "MonthDay" "Data.Thyme.Calendar.Internal" "thyme-0.4-HyK6SfK4MlBKX4LjgMsZJ4" 'False) (C1 ('MetaCons "MonthDay" 'PrefixI 'True) (S1 ('MetaSel ('Just "mdMonth") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Month) :*: S1 ('MetaSel ('Just "mdDay") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 DayOfMonth)))
newtype Vector MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

newtype MVector s MonthDay Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

monthDay Source #

Arguments

:: Bool

isLeapYear?

-> Iso' DayOfYear MonthDay 

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

monthDayValid Source #

Arguments

:: Bool

isLeapYear?

-> MonthDay 
-> Maybe DayOfYear 

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

monthLength Source #

Arguments

:: Bool

isLeapYear?

-> Month 
-> Days 

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

dayOfYearToMonthAndDay Source #

Arguments

:: Bool

isLeapYear?

-> DayOfYear 
-> (Month, DayOfMonth) 

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)

monthAndDayToDayOfYear Source #

Arguments

:: Bool

isLeapYear?

-> Month 
-> DayOfMonth 
-> DayOfYear 

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

monthAndDayToDayOfYearValid Source #

Arguments

:: Bool

isLeapYear?

-> Month 
-> DayOfMonth 
-> Maybe DayOfYear 

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)