{- |
Module      :  $Header$
Description :  Converting between time units.
Copyright   :  (c) plaimi 2014
License     :  GPL-3

Maintainer  :  plailude@plaimi.net
-} module Data.Time.Conversion where

import qualified Data.Time.Calendar as C

import Data.Time.Units
  (Day
  ,Hour
  ,Minute
  ,Month
  ,Second (MkSecond)
  ,Year
  ,timeVal)

fromGregorian :: Year y -> Month mo -> Day d -> C.Day
-- | fromGregorian is a wrapper for Data.Time.Calendar.fromGregorian, which
-- lets us pass our 'Year'-'Month'-'Day' structures. It calls
-- Data.Time.Calendar.fromGregorian with the appropriate types, and returns
-- a Data.Time.Calendar.Day.
fromGregorian y mo s = C.fromGregorian (timeVal y) (timeVal mo) (timeVal s)


asSeconds :: Hour h -> Minute m -> Second s -> Second t
-- | asSeconds take some 'TimeUnit's and convert them to 'Second's.
asSeconds h m s = MkSecond $ 3600 * timeVal h + 60 * timeVal m + timeVal s