From 25a592de8423c0e40e85af4a49015829e3470a89 Mon Sep 17 00:00:00 2001 From: vt Date: Sat, 8 Aug 2015 18:15:02 +0300 Subject: [PATCH] accept datetime with msec --- src/jsx_parser.erl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/jsx_parser.erl b/src/jsx_parser.erl index 322494c..7e6c6cf 100644 --- a/src/jsx_parser.erl +++ b/src/jsx_parser.erl @@ -119,6 +119,16 @@ when is_integer(Year), is_integer(Month), is_integer(Day), is_integer(Hour), is_ Stack, Config ); +value([{{Year, Month, Day}, {Hour, Min, Sec}}|Tokens], Handler, Stack, Config) +when is_integer(Year), is_integer(Month), is_integer(Day), is_integer(Hour), is_integer(Min), is_float(Sec) -> + value([{string, unicode:characters_to_binary(io_lib:format( + "~4.10.0B-~2.10.0B-~2.10.0BT~2.10.0B:~2.10.0B:~9.6.0fZ", + [Year, Month, Day, Hour, Min, Sec] + ))}|Tokens], + Handler, + Stack, + Config + ); value([{_, Value}|Tokens], Handler, Stack, Config) -> value([Value] ++ Tokens, Handler, Stack, Config); value([String|Tokens], Handler, Stack, Config) when is_atom(String) -> @@ -1147,6 +1157,10 @@ datetime_test_() -> {"datetime", ?_assertEqual( [start_array, {string, <<"2014-08-13T23:12:34Z">>}, end_array, end_json], parse([start_array, {{2014,08,13},{23,12,34}}, end_array, end_json], []) + )}, + {"datetime", ?_assertEqual( + [start_array, {string, <<"2014-08-13T23:12:34.363369Z">>}, end_array, end_json], + parse([start_array, {{2014,08,13},{23,12,34.363369}}, end_array, end_json], []) )} ].