    -- |
    -- 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)