Skip to content

Commit

Permalink
Add now and Milliseconds to DateTime
Browse files Browse the repository at this point in the history
  • Loading branch information
rnons committed Sep 6, 2020
1 parent 6d2a644 commit 9ebb3c6
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions src/Nonbili/DateTime.purs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
module Nonbili.DateTime
( DateTime
( DateTime(..)
, Milliseconds(..)
, Date
, Time
, now
, getDate
, getTime
, getUTCDate
Expand All @@ -12,9 +14,10 @@ import Nonbili.Prelude

import Data.Argonaut.Core as A
import Data.Argonaut.Decode (class DecodeJson, JsonDecodeError(..))
import Data.Argonaut.Encode (class EncodeJson)
import Data.Argonaut.Encode (class EncodeJson, encodeJson)
import Data.JSDate (JSDate)
import Data.JSDate as JSDate
import Data.Time.Duration as DT
import Effect.Unsafe (unsafePerformEffect)

newtype DateTime = DateTime JSDate
Expand All @@ -23,7 +26,8 @@ derive instance ordDateTime :: Ord DateTime

instance decodeJsonDateTime :: DecodeJson DateTime where
decodeJson json =
note (UnexpectedValue json) $ (A.toString json >>= read)
note (UnexpectedValue json)
(A.toString json >>= read)

instance encodeJsonDateTime :: EncodeJson DateTime where
encodeJson (DateTime date) =
Expand All @@ -41,6 +45,21 @@ read str =
where
date = unsafePerformEffect $ JSDate.parse str

now :: Effect DateTime
now = DateTime <$> JSDate.now

newtype Milliseconds = Milliseconds DT.Milliseconds
derive instance eqMilliseconds :: Eq Milliseconds
derive instance ordMilliseconds :: Ord Milliseconds

instance decodeJsonMilliseconds :: DecodeJson Milliseconds where
decodeJson json =
note (UnexpectedValue json)
(Milliseconds <<< DT.Milliseconds <$> A.toNumber json)

instance encodeJsonMilliseconds :: EncodeJson Milliseconds where
encodeJson (Milliseconds (DT.Milliseconds ms)) = encodeJson ms

type Date =
{ year :: Number
, month :: Number
Expand Down

0 comments on commit 9ebb3c6

Please sign in to comment.