-- |

-- Module      : Data.Hourglass

-- License     : BSD-style

-- Maintainer  : Vincent Hanquez <vincent@snarc.org>

-- Stability   : experimental

-- Portability : unknown

--

-- Types and methods for time manipulation.

--

-- The most basic type for time representation is Elapsed, which

-- represent a number of elapsed seconds since the unix epoch.

--

-- Every other defined types can be convert to and from Elapsed type:

--

-- > timeGetElapsed (Date 1 2 3) :: Elapsed

-- > timeFromElapsed 123         :: DateTime

--

-- Local time is represented by any other time types (Elapsed, Date, DateTime, ..),

-- but augmented by a Timezone offset in minutes.

--

-- > localTime (Date 2014 May 4) 600 -- local time at UTC+10 of May 4th 2014

--

module Data.Hourglass
    ( module Data.Hourglass.Time
    , module Data.Hourglass.Types
    , module Data.Hourglass.Format
    , module Data.Hourglass.Local
    , module Data.Hourglass.Zone
    -- * Calendar misc functions

    , isLeapYear
    , getWeekDay
    , getDayOfTheYear
    , daysInMonth
    ) where

import Data.Hourglass.Time
import Data.Hourglass.Format
import Data.Hourglass.Types
import Data.Hourglass.Local
import Data.Hourglass.Zone
import Data.Hourglass.Calendar (isLeapYear, getWeekDay, getDayOfTheYear, daysInMonth)