name: lens-datetime version: 0.3 license: BSD3 license-file: LICENSE author: Mihaly Barasz maintainer: Mihaly Barasz build-type: Simple cabal-version: >= 1.6 category: Data, Lenses stability: experimental homepage: https://github.com/nilcons/lens-datetime bug-reports: https://github.com/nilcons/lens-datetime/issues synopsis: 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 (). . 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 extra-source-files: README.md stack.yaml .gitignore source-repository head type: git location: https://github.com/nilcons/lens-datetime.git library ghc-options: -Wall build-depends: base >= 4.6 && < 5 , time == 1.* , lens >= 3 && < 5 exposed-modules: Data.Time.Lens