MyNixOS website logo
Description

Lenses for Data.Time.* types.

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

lens-datetime

Haskell library that provides a unified lens based accessors to the various types in Data.Time.Clock and Data.Time.LocalTime.

Metadata

Version

0.3

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows