Copyright | (C) 2017 Jason Johnson |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Jason Johnson <jason.johnson.081@gmail.com> |
Stability | experimental |
Portability | POSIX, Windows |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This is the module for CalendarDateTime
. A CalendarDateTime
represents a date and time within the calendar system that is part of its type. It has no reference to a particular time zone and is therefor not
a globally unique value as June 3rd 2020 10:05pm occurred at different Instant
s around the world.
Construction
To construct one of these types you will need a CalendarDate
and a LocalTime
Synopsis
- data CalendarDateTime calendar
- class IsCalendar cal where
- type Date cal
- data DayOfWeek cal
- data Month cal
- day' :: Functor f => (DayOfMonth -> f DayOfMonth) -> CalendarDate cal -> f (CalendarDate cal)
- month' :: CalendarDate cal -> Month cal
- monthl' :: Functor f => (Int -> f Int) -> CalendarDate cal -> f (CalendarDate cal)
- year' :: Functor f => (Year -> f Year) -> CalendarDate cal -> f (CalendarDate cal)
- dayOfWeek' :: CalendarDate cal -> DayOfWeek cal
- next' :: Int -> DayOfWeek cal -> CalendarDate cal -> CalendarDate cal
- previous' :: Int -> DayOfWeek cal -> CalendarDate cal -> CalendarDate cal
- class HasDate d where
- on :: LocalTime -> CalendarDate cal -> CalendarDateTime cal
- at :: CalendarDate cal -> LocalTime -> CalendarDateTime cal
- atStartOfDay :: CalendarDate cal -> CalendarDateTime cal
Types
data CalendarDateTime calendar Source #
Represents a specific date and time within its calendar system. NOTE: a CalendarDateTime does *not* represent a specific time on the global time line because e.g. "10.March.2006 4pm" is a different instant in most time zones. Convert it to a ZonedDateTime first if you wish to convert to an instant (or use a convenience function).
Instances
class IsCalendar cal where Source #
day' :: Functor f => (DayOfMonth -> f DayOfMonth) -> CalendarDate cal -> f (CalendarDate cal) Source #
month' :: CalendarDate cal -> Month cal Source #
monthl' :: Functor f => (Int -> f Int) -> CalendarDate cal -> f (CalendarDate cal) Source #
year' :: Functor f => (Year -> f Year) -> CalendarDate cal -> f (CalendarDate cal) Source #
dayOfWeek' :: CalendarDate cal -> DayOfWeek cal Source #
next' :: Int -> DayOfWeek cal -> CalendarDate cal -> CalendarDate cal Source #
previous' :: Int -> DayOfWeek cal -> CalendarDate cal -> CalendarDate cal Source #
Instances
class HasDate d where Source #
day :: Functor f => (DayOfMonth -> f DayOfMonth) -> d -> f d Source #
Lens for the day component of a HasDate
. Please note that days are not clamped: if you add e.g. 400 days then the month and year will roll
Accessor for the Month component of a HasDate
.
monthl :: Functor f => (Int -> f Int) -> d -> f d Source #
Lens for interacting with the month component of a HasDate
. Please note that we convert the month to an Int so meaningful math can be done on it. Also
please note that the day will be unaffected except in the case of "end of month" days which may clamp. Note that this clamping will only occur as a final step,
so that
>>>
modify monthl (+ 2) <$> Gregorian.calendarDate 31 January 2000
Just (CalendarDate 31 March 2000)
and not 29th of March as would happen with some libraries.
year :: Functor f => (Year -> f Year) -> d -> f d Source #
Lens for the year component of a HasDate
. Please note that the rest of the date is left as is, with two exceptions: Feb 29 will clamp to 28 in a non-leapyear
and if the new year is earlier than the earliest supported year it will clamp back to that year
dayOfWeek :: d -> DoW d Source #
Accessor for the Day of the week enum of a HasDate
, for example:
>>>
dayOfWeek . fromJust $ Gregorian.calendarDate 31 January 2000
Monday
Instances
Constructors
on :: LocalTime -> CalendarDate cal -> CalendarDateTime cal Source #
Returns a CalendarDateTime
at LocalTime
on the given CalendarDate
at :: CalendarDate cal -> LocalTime -> CalendarDateTime cal Source #
Returns a CalendarDateTime
of the CalendarDate
at the given LocalTime
atStartOfDay :: CalendarDate cal -> CalendarDateTime cal Source #
Returns the first valid time in the day specified by CalendarDate
within the given TimeZone