[Haskell-beginners] Date Time in Haskell

Kostiantyn Rybnikov k-bx at k-bx.com
Thu May 14 10:25:21 UTC 2015


Hi Dananji!

First of all, for more explicit failure-handling I suggest using "readMay"
from package "safe" [0] instead of "read" whenever possible.

Alternative to using "read", if you know date format of input-data, you can
take a look at "UNIX-style parsing" section at Data.Time.Format module [1].
If you have older "time" package, you'd probably use parseTime, for newer
versions it is recommended to use parseTimeM.

Here's an example:

```
➜  ~  ghci
GHCi, version 7.8.4: http://www.haskell.org/ghc/  :? for help
Prelude> import Data.Time.Format
Prelude Data.Time.Format> import System.Locale
Prelude Data.Time.Format System.Locale> import Data.Time.Clock
Prelude Data.Time.Format System.Locale Data.Time.Clock> parseTime
defaultTimeLocale "%F %X" "2014-01-02 11:12:30" :: Maybe UTCTime
Just 2014-01-02 11:12:30 UTC
```

If you have a value of type "IO <something>", you can "extract" it when
being in IO monad like this:

main = do
    currentTime <- getCurrentTime
    -- in all remaining code, currentTime has type "UTCTime"
    ...
    getDifference currentTime userTime

In terms of "sugar-less" way to use a value from "IO <something>", you can
also use it like this:

getCurrentTime >>= \currentTime -> doSomething currentTime

Hope this helps.

[0]: https://hackage.haskell.org/package/safe
[1]:
http://hackage.haskell.org/package/time-1.5.0.1/docs/Data-Time-Format.html


On Thu, May 14, 2015 at 10:20 AM, Dananji Liyanage <dan9131 at gmail.com>
wrote:

> Hi All,
>
> I'm trying out the date time conversions in Haskell.
>
> How do I convert a keyboard input (IO String) to UTCTime?
>
> This is how I'm doing (probably there's a better way),
>               convDay x = read (x ++ " 00:00:00") :: UTCTime
> ​​
>
> Another thing, how do I convert getCurrentTime (IO UTCTime) to UTCTime in
> order to get the time difference between the keyboard input date and today?
>
> --
> Regards,
> Dananji Liyanage
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150514/59ebba36/attachment.html>


More information about the Beginners mailing list