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

Data.Thyme.Calendar.WeekDate

Description

Various Week Date formats

Synopsis

Documentation

type Year = Int Source #

Calendar year.

type WeekOfYear = Int Source #

Week of the year.

Meaning of values depends on context; see wdWeek, swWeek, mwWeek.

type DayOfWeek = Int Source #

Day of the week.

0
Sunday for SundayWeek
16
MondaySaturday
7
Sunday for WeekDate, MondayWeek, and WeekdayOfMonth

ISO 8601 Week Date

data WeekDate Source #

ISO 8601 Week Date.

Note that week 01 is defined as the week with the first Thursday, thus wdYear may differ from the Gregorian year between December 29th and January 3rd.

Constructors

WeekDate 

Fields

Instances

Instances details
Arbitrary WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

CoArbitrary WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Methods

coarbitrary :: WeekDate -> Gen b -> Gen b #

Data WeekDate 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) -> WeekDate -> c WeekDate #

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

toConstr :: WeekDate -> Constr #

dataTypeOf :: WeekDate -> DataType #

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

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

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

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

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

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

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

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

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

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

Bounded WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Generic WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Associated Types

type Rep WeekDate :: Type -> Type #

Methods

from :: WeekDate -> Rep WeekDate x #

to :: Rep WeekDate x -> WeekDate #

Show WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

NFData WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

rnf :: WeekDate -> () #

Eq WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Ord WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Hashable WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

hashWithSalt :: Int -> WeekDate -> Int #

hash :: WeekDate -> Int #

Random WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Methods

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

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

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

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

FormatTime WeekDate Source # 
Instance details

Defined in Data.Thyme.Format

Methods

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

ParseTime WeekDate Source # 
Instance details

Defined in Data.Thyme.Format

Unbox WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Vector Vector WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

MVector MVector WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep WeekDate = D1 ('MetaData "WeekDate" "Data.Thyme.Calendar.Internal" "thyme-0.4-HyK6SfK4MlBKX4LjgMsZJ4" 'False) (C1 ('MetaCons "WeekDate" 'PrefixI 'True) (S1 ('MetaSel ('Just "wdYear") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Year) :*: (S1 ('MetaSel ('Just "wdWeek") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 WeekOfYear) :*: S1 ('MetaSel ('Just "wdDay") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 DayOfWeek))))
newtype Vector WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

newtype MVector s WeekDate Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

weekDate :: Iso' Day WeekDate Source #

Convert between a Day and an ISO 8601 WeekDate.

> YearMonthDay 2016 1 1 ^. from gregorian . weekDate
WeekDate {wdYear = 2015, wdWeek = 53, wdDay = 5}

weekDateValid :: WeekDate -> Maybe Day Source #

Convert a WeekDate to a Day, or Nothing for invalid WeekDate.

showWeekDate :: Day -> String Source #

Shows a Day using the yyyy-Www-d ISO 8601 Week Date format.

> showWeekDate (gregorian # YearMonthDay 2006 11 15)
"2006-W46-3"

Weeks starting Sunday

data SundayWeek Source #

Week-based calendar date with the first Sunday of the year as the first day of week 01. This corresponds to %U and %w of strftime(3).

The final week of a given year and week 00 of the next both refer to the same week.

Constructors

SundayWeek 

Fields

Instances

Instances details
Arbitrary SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

CoArbitrary SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Methods

coarbitrary :: SundayWeek -> Gen b -> Gen b #

Data SundayWeek 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) -> SundayWeek -> c SundayWeek #

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

toConstr :: SundayWeek -> Constr #

dataTypeOf :: SundayWeek -> DataType #

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

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

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

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

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

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

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

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

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

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

Bounded SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Generic SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Associated Types

type Rep SundayWeek :: Type -> Type #

Show SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

NFData SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

rnf :: SundayWeek -> () #

Eq SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Ord SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Hashable SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Random SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Methods

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

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

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

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

FormatTime SundayWeek Source # 
Instance details

Defined in Data.Thyme.Format

ParseTime SundayWeek Source # 
Instance details

Defined in Data.Thyme.Format

Unbox SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Vector Vector SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

MVector MVector SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep SundayWeek = D1 ('MetaData "SundayWeek" "Data.Thyme.Calendar.Internal" "thyme-0.4-HyK6SfK4MlBKX4LjgMsZJ4" 'False) (C1 ('MetaCons "SundayWeek" 'PrefixI 'True) (S1 ('MetaSel ('Just "swYear") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Year) :*: (S1 ('MetaSel ('Just "swWeek") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 WeekOfYear) :*: S1 ('MetaSel ('Just "swDay") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 DayOfWeek))))
newtype Vector SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

newtype MVector s SundayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

sundayWeek :: Iso' Day SundayWeek Source #

Conversion between Day and SundayWeek.

> YearMonthDay 2016 1 3 ^. from gregorian . sundayWeek
SundayWeek {swYear = 2016, swWeek = 1, swDay = 0}

Weeks starting Monday

data MondayWeek Source #

Week-based calendar date with the first Monday of the year as the first day of week 01. This corresponds to %W and %u of strftime(3).

The final week of a given year and week 00 of the next both refer to the same week.

Constructors

MondayWeek 

Fields

Instances

Instances details
Arbitrary MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

CoArbitrary MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Methods

coarbitrary :: MondayWeek -> Gen b -> Gen b #

Data MondayWeek 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) -> MondayWeek -> c MondayWeek #

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

toConstr :: MondayWeek -> Constr #

dataTypeOf :: MondayWeek -> DataType #

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

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

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

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

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

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

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

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

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

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

Bounded MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Generic MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Associated Types

type Rep MondayWeek :: Type -> Type #

Show MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

NFData MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Methods

rnf :: MondayWeek -> () #

Eq MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Ord MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Hashable MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Random MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.WeekDate

Methods

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

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

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

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

FormatTime MondayWeek Source # 
Instance details

Defined in Data.Thyme.Format

ParseTime MondayWeek Source # 
Instance details

Defined in Data.Thyme.Format

Unbox MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

Vector Vector MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

MVector MVector MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

type Rep MondayWeek = D1 ('MetaData "MondayWeek" "Data.Thyme.Calendar.Internal" "thyme-0.4-HyK6SfK4MlBKX4LjgMsZJ4" 'False) (C1 ('MetaCons "MondayWeek" 'PrefixI 'True) (S1 ('MetaSel ('Just "mwYear") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Year) :*: (S1 ('MetaSel ('Just "mwWeek") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 WeekOfYear) :*: S1 ('MetaSel ('Just "mwDay") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 DayOfWeek))))
newtype Vector MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

newtype MVector s MondayWeek Source # 
Instance details

Defined in Data.Thyme.Calendar.Internal

mondayWeek :: Iso' Day MondayWeek Source #

Conversion between Day and MondayWeek.

> YearMonthDay 2016 1 3 ^. from gregorian . mondayWeek
MondayWeek {mwYear = 2016, mwWeek = 0, mwDay = 7}

toWeekDate :: Day -> (Year, WeekOfYear, DayOfWeek) Source #

Converts a Day to an ISO week date.

toWeekDate (view weekDate -> WeekDate y w d) = (y, w, d)

fromWeekDate :: Year -> WeekOfYear -> DayOfWeek -> Day Source #

Converts an ISO week date to a Day. Does not validate the input.

fromWeekDate y w d = weekDate # WeekDate y w d

fromWeekDateValid :: Year -> WeekOfYear -> DayOfWeek -> Maybe Day Source #

Converts an ISO week date to a Day. Returns Nothing for invalid input.

fromWeekDateValid y w d = weekDateValid (WeekDate y w d)

Orphan instances

Arbitrary MondayWeek Source # 
Instance details

Arbitrary SundayWeek Source # 
Instance details

Arbitrary WeekDate Source # 
Instance details

CoArbitrary MondayWeek Source # 
Instance details

Methods

coarbitrary :: MondayWeek -> Gen b -> Gen b #

CoArbitrary SundayWeek Source # 
Instance details

Methods

coarbitrary :: SundayWeek -> Gen b -> Gen b #

CoArbitrary WeekDate Source # 
Instance details

Methods

coarbitrary :: WeekDate -> Gen b -> Gen b #

Bounded MondayWeek Source # 
Instance details

Bounded SundayWeek Source # 
Instance details

Bounded WeekDate Source # 
Instance details

Random MondayWeek Source # 
Instance details

Methods

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

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

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

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

Random SundayWeek Source # 
Instance details

Methods

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

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

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

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

Random WeekDate Source # 
Instance details

Methods

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

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

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

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