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 elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to