From e28130d9f39857f57843dcb2f5b699c2bd6a4812 Mon Sep 17 00:00:00 2001 From: Ben Kearns Date: Wed, 19 Dec 2012 01:32:53 +0000 Subject: [PATCH] Added parsing of ISO formats i.e. "2012-12-19T12:12:12.00001" Conflicts: src/ec_date.erl --- src/ec_date.erl | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ec_date.erl b/src/ec_date.erl index 16a0af7..a000763 100644 --- a/src/ec_date.erl +++ b/src/ec_date.erl @@ -92,13 +92,13 @@ do_parse(Date, Now, Opts) -> true -> {D1, T1}; false -> erlang:throw({?MODULE, {bad_date, Date}}) end; - {D1, _T1, {Ms}} = {{Y, M, D}, {H, M1, S}, {Ms}} + {D1, T1, {Ms}} = {{Y, M, D}, {H, M1, S}, {Ms}} when is_number(Y), is_number(M), is_number(D), is_number(H), is_number(M1), is_number(S), - is_number(Ms) -> + is_number(Ms) -> case calendar:valid_date(D1) of - true -> {D1, {H,M1,S,Ms}}; + true -> {D1, T1, {Ms}}; false -> erlang:throw({?MODULE, {bad_date, Date}}) end; Unknown -> erlang:throw({?MODULE, {bad_date, Date, Unknown }}) @@ -108,14 +108,14 @@ do_parse(Date, Now, Opts) -> %% @doc parses the datetime from a string into 'now' format nparse(Date) -> case parse(Date) of - {DateS, {H, M, S, Ms} } -> - GSeconds = calendar:datetime_to_gregorian_seconds({DateS, {H, M, S} }), - ESeconds = GSeconds - ?GREGORIAN_SECONDS_1970, - {ESeconds div 1000000, ESeconds rem 1000000, Ms}; - DateTime -> - GSeconds = calendar:datetime_to_gregorian_seconds(DateTime), - ESeconds = GSeconds - ?GREGORIAN_SECONDS_1970, - {ESeconds div 1000000, ESeconds rem 1000000, 0} + {DateS, Time, {Ms} } -> + GSeconds = calendar:datetime_to_gregorian_seconds({DateS, Time}), + ESeconds = GSeconds - ?GREGORIAN_SECONDS_1970, + {ESeconds div 1000000, ESeconds rem 1000000, Ms}; + DateTime -> + GSeconds = calendar:datetime_to_gregorian_seconds(DateTime), + ESeconds = GSeconds - ?GREGORIAN_SECONDS_1970, + {ESeconds div 1000000, ESeconds rem 1000000, {0}} end. %%