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. %%