Description
Lenses for Data.Time.* types.
Description
The lens-datetime
library provides a unified lens based accessors to the various types in Data.Time.Clock
, Data.Time.Calendar
and Data.Time.LocalTime
. This library only tries to make some of the common use-cases convenient, it doesn't aim for completeness. If you want completeness and/or efficiency try the thyme
package instead (http://hackage.haskell.org/package/thyme).
Demonstration of basic uses.
import Control.Lens
import Data.Time
import Data.Time.Lens
aDay :: Day
aDay = fromGregorian 2013 08 22
aLocal :: LocalTime
aLocal = LocalTime aDay (TimeOfDay 13 45 28)
aUTC :: UTCTime
aUTC = UTCTime aDay 7458.9
You can then do the following:
> aLocal ^. years
2013
> aUTC ^. months
8
> aLocal & time .~ midnight
2013-08-22 00:00:00
> aUTC & days .~ 1 & months .~ 1
2013-01-01 02:04:18.9 UTC
You can manipulate the date-time values with proper roll-over behavior via the FlexibleDateTime
mechanism:
> aLocal & flexDT.months +~ 12
2014-08-22 13:45:28
> aUTC & flexDT.days +~ 100
2013-11-30 02:04:18.9 UTC
> aLocal & flexDT.minutes +~ 120
2013-08-22 15:45:28
> aLocal & flexDT %~ ((days +~ 7) . (hours +~ 2))
2013-08-22 13:45:28
README.md
lens-datetime
Haskell library that provides a unified lens
based accessors to the various types in Data.Time.Clock
and Data.Time.LocalTime
.