name: lens-datetime
version: 0.3
license: BSD3
license-file: LICENSE
author: Mihaly Barasz <klao@nilcons.com>
maintainer: Mihaly Barasz <klao@nilcons.com>
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
(<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
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