diff options
author | Joris | 2018-01-28 12:13:09 +0100 |
---|---|---|
committer | Joris | 2018-06-11 12:28:29 +0200 |
commit | 33b85b7f12798f5762d940ed5c30f775cdd7b751 (patch) | |
tree | daf8cfb7b0a16b2fce65848fc0ca2831f33a0701 /common/src/Common/Util | |
parent | ab17b6339d16970c3845ec4f153bfeed89eae728 (diff) |
WIP
Diffstat (limited to 'common/src/Common/Util')
-rw-r--r-- | common/src/Common/Util/Time.hs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/common/src/Common/Util/Time.hs b/common/src/Common/Util/Time.hs new file mode 100644 index 0000000..9ab7ab5 --- /dev/null +++ b/common/src/Common/Util/Time.hs @@ -0,0 +1,26 @@ +module Common.Util.Time + ( timeToDay + , parseDay + ) where + +import Data.Text (Text) +import qualified Data.Text as T +import Data.Time (UTCTime) +import qualified Data.Time as Time +import Data.Time.Calendar (Day) +import Data.Time.LocalTime +import qualified Text.Read as T + +timeToDay :: UTCTime -> IO Day +timeToDay time = localDay . (flip utcToLocalTime time) <$> getTimeZone time + +parseDay :: Text -> Maybe Day +parseDay str = do + (d, m, y) <- + case T.splitOn str "/" of + [d, m, y] -> Just (d, m, y) + _ -> Nothing + d' <- T.readMaybe . T.unpack $ d + m' <- T.readMaybe . T.unpack $ m + y' <- T.readMaybe . T.unpack $ y + return $ Time.fromGregorian y' m' d' |