Skip to content

Commit

Permalink
Stubbing out some of the timezone conversions
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanHowell committed Apr 23, 2012
1 parent 17b59a6 commit ed8a9eb
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 12 deletions.
2 changes: 2 additions & 0 deletions Data/Time/Cube.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ module Data.Time.Cube
-- * Time conversions
, convertDateTime
, convertDateTimeZone
, convertTimeZone

-- * Raw date components
, DateTimeStruct(..)
Expand Down Expand Up @@ -46,6 +47,7 @@ module Data.Time.Cube

import Prelude hiding ((.), id)

import Data.Time.Cube.TimeZone
import Data.Time.Cube.Types
import Data.Time.Cube.UnixTime

Expand Down
60 changes: 60 additions & 0 deletions Data/Time/Cube/TimeZone.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Data.Time.Cube.TimeZone
( convertTimeZone
, convertDateTimeZone
) where

import Control.Monad.Trans (MonadIO, liftIO)
import Data.Time.Cube.Types
import Data.Time.Cube.UnixTime

-- class Monad m => TimeZoneSeries2 m (tz :: TimeZone) where
-- convertToUTC :: UnixTimeNanos tz -> m (UnixTimeNanos 'UTC)
-- convertFromUTC :: UnixTimeNanos 'UTC -> m (UnixTimeNanos tz)

class Monad m => TimeZoneSeries2 (from :: TimeZone) m (to :: TimeZone) where
convertTimeZone :: UnixTimeNanos from -> m (UnixTimeNanos to)

getLocalTimeZone :: Monad m => m String
getLocalTimeZone = return "US/Pacific"

instance MonadIO m => TimeZoneSeries2 'UTC m 'LocalTime where
convertTimeZone t = do
localTimeZone <- liftIO getLocalTimeZone
case localTimeZone of
"US/Eastern" -> do
-- UnixTimeNanos (s, ns) :: UnixTimeNanos '(TimeZone "US/Pacific") <- convertTimeZone t
UnixTimeNanos (s, ns) :: UnixTimeNanos 'USEastern <- convertTimeZone t
return $! UnixTimeNanos (s, ns)

"US/Pacific" -> do
-- UnixTimeNanos (s, ns) :: UnixTimeNanos '(TimeZone "US/Pacific") <- convertTimeZone t
UnixTimeNanos (s, ns) :: UnixTimeNanos 'USPacific <- convertTimeZone t
return $! UnixTimeNanos (s, ns)

instance Monad m => TimeZoneSeries2 'UTC m 'USPacific where
convertTimeZone (UnixTimeNanos (s, ns)) = return $! UnixTimeNanos (s-28800, ns)

instance Monad m => TimeZoneSeries2 'UTC m 'USEastern where
convertTimeZone (UnixTimeNanos (s, ns)) = return $! UnixTimeNanos (s-18000, ns)

instance Monad m => TimeZoneSeries2 tz m tz where
convertTimeZone = return

convertToUTC
:: (TimeZoneSeries2 tz m 'UTC)
=> UnixTimeNanos tz -> m (UnixTimeNanos 'UTC)
convertToUTC = convertTimeZone

convertDateTimeZone
:: (DateTime f, DateTime t)
=> f
-> IO t
convertDateTimeZone = undefined

10 changes: 2 additions & 8 deletions Data/Time/Cube/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ module Data.Time.Cube.Types

-- * Time conversions
, convertDateTime
, convertDateTimeZone

-- * Date sections
, Epoch
Expand Down Expand Up @@ -179,7 +178,8 @@ deriving instance Show Pico
deriving instance Num Pico
deriving instance NFData Pico

data TimeZone = UTC | LocalTime -- NamedTimeZone String
data TimeZone = UTC | LocalTime | USEastern | USPacific -- | forall a . TimeZone a
deriving (Show, Eq, Ord)

class DateTime f where
-- |
Expand Down Expand Up @@ -213,12 +213,6 @@ convertDateTime
-> Maybe t
convertDateTime = undefined

convertDateTimeZone
:: (DateTime f, DateTime t)
=> f
-> IO t
convertDateTimeZone = undefined

class Duration (a :: *)

instance Duration Year
Expand Down
4 changes: 0 additions & 4 deletions Data/Time/Cube/UnixTime.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ module Data.Time.Cube.UnixTime
, getCurrentUnixTime
, getCurrentUnixTimeNanos

-- * Time conversions
, convertDateTime
, convertDateTimeZone

-- * Raw date components
, DateTimeStruct(..)

Expand Down

0 comments on commit ed8a9eb

Please sign in to comment.