If you already have a Date in JS that you need to get into Elm, then 
sending it as an ISO string will certainly work. But another, more direct 
way to pass a date representation through a port is to pass it as a number, 
using the getTime 
<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime>
 method 
in JS. In Elm, you can decode it as a Float and then convert it to a Date 
with Date.fromTime 
<http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Date#fromTime>.

There isn't a *Json.Decode.date*, likely because JSON doesn't describe a 
standard way to encode dates. In Elm, the idea of Json encoding/decoding 
extends to all conversions between JS types and Elm types, which is nice in 
that it gives us a unifying concept, but it does leave out the ability to 
pass Date values to and from Elm, without first converting them to a 
JSON-representable type.

Justin

On Sunday, January 29, 2017 at 2:47:43 PM UTC-5, Mickey Vashchinsky wrote:
>
> Looks like you already have Date and not String.
>
> I am pretty new to Elm myself and I couldn't find a way to decodeValue of 
> Date, but, I think as a workaround, on JavaScript side before sending the 
> json 
> through port, you could convert your Date fields to String with: 
>
> myJson.date = myJson.date.toISOString()
>
> Hope it helps.
>
>
> On Sunday, January 29, 2017 at 4:55:51 PM UTC+2, fxmy wang wrote:
>>
>> Hi guys,
>> So I was trying to decode a field named date inside JSON as String but 
>> without success. And the result is quite confusing.
>> Could anyone shed some light on me?
>>
>> JSON:
>>
>> [{"author":{"type":"full","displayName":"fxmy","url":"https://github.com/fxmy","picture":"https://avatars.githubusercontent.com/u/3283415?v=3&s=73"},"content":"another
>>  test","date":"2017-01-26T03:43:57.190Z"}]
>>
>> Json.Encode.Value that comes through port ( via Debug.log) :
>>
>> value: { 0 = { author = { type = "full", displayName = "fxmy", url = 
>> "https://github.com/fxmy";, picture = 
>> "https://avatars.githubusercontent.com/u/3283415?v=3&s=73"; }, content = 
>> "another test", date = <Thu Jan 26 2017 11:43:57 GMT+0800 (CST)> } }
>>
>> When trying to decode date field as String I got this,
>> Result after calling Json.Decode.decodeValue ( via Debug.log) :
>>
>> Err "Expecting a String at _[0].date but instead got: 
>> \"2017-01-26T03:43:57.190Z\""
>>
>> What am I doing wrong?
>>
>> Cheers.
>> ​
>>
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to