From d34da1d107199d710b78cf534e8482b87b06ec3f Mon Sep 17 00:00:00 2001 From: FlyingLu <77955264+FlyingLu@users.noreply.github.com> Date: Mon, 1 Nov 2021 16:24:15 +0800 Subject: [PATCH 1/3] fixed incorrect 'G' in the format parameter string In the format parameter string, 'G' should have represented 24-hour format of an hour WITHOUT leading zeros. But it actually results in 24-hour format of an hour WITH leading zeros. --- src/ec_date.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ec_date.erl b/src/ec_date.erl index 97bcea3..7ba7e05 100644 --- a/src/ec_date.erl +++ b/src/ec_date.erl @@ -522,7 +522,7 @@ format([$g|T], {_,{H,_,_}}=Dt, Acc) when H > 12 -> format([$g|T], {_,{H,_,_}}=Dt, Acc) -> format(T, Dt, [itol(H)|Acc]); format([$G|T], {_,{H,_,_}}=Dt, Acc) -> - format(T, Dt, [pad2(H)|Acc]); + format(T, Dt, [itol(H)|Acc]); format([$h|T], {_,{H,_,_}}=Dt, Acc) when H > 12 -> format(T, Dt, [pad2(H-12)|Acc]); format([$h|T], {_,{H,_,_}}=Dt, Acc) -> From 791729c30a3f420abdf4f14103994c906c724701 Mon Sep 17 00:00:00 2001 From: FlyingLu <77955264+FlyingLu@users.noreply.github.com> Date: Tue, 2 Nov 2021 11:27:57 +0800 Subject: [PATCH 2/3] Fixed the incorrect macro. --- src/ec_date.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ec_date.erl b/src/ec_date.erl index 7ba7e05..a7a2b66 100644 --- a/src/ec_date.erl +++ b/src/ec_date.erl @@ -45,8 +45,8 @@ -define( is_tz_offset(H1,H2,M1,M2), (?is_num(H1) andalso ?is_num(H2) andalso ?is_num(M1) andalso ?is_num(M2)) ). -define(GREGORIAN_SECONDS_1970, 62167219200). --define(ISO_8601_DATETIME_FORMAT, "Y-m-dTG:i:sZ"). --define(ISO_8601_DATETIME_WITH_MS_FORMAT, "Y-m-dTG:i:s.fZ"). +-define(ISO_8601_DATETIME_FORMAT, "Y-m-dTH:i:sZ"). +-define(ISO_8601_DATETIME_WITH_MS_FORMAT, "Y-m-dTH:i:s.fZ"). -type year() :: non_neg_integer(). -type month() :: 1..12 | {?MONTH_TAG, 1..12}. From e89e95de5f31840ef10ded25e065aa6a9b90503d Mon Sep 17 00:00:00 2001 From: FlyingLu <77955264+FlyingLu@users.noreply.github.com> Date: Wed, 3 Nov 2021 00:11:05 +0800 Subject: [PATCH 3/3] Added more test cases. Added more test cases to show the difference between 'G' and 'H'. --- src/ec_date.erl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ec_date.erl b/src/ec_date.erl index a7a2b66..918845f 100644 --- a/src/ec_date.erl +++ b/src/ec_date.erl @@ -762,6 +762,8 @@ basic_format_test_() -> ?_assertEqual(format("H:i:s",?DATE), "17:16:17"), ?_assertEqual(format("z",?DATE), "68"), ?_assertEqual(format("D M j G:i:s Y",?DATE), "Sat Mar 10 17:16:17 2001"), + ?_assertEqual(format("D M j G:i:s Y", {{2001,3,10},{5,16,17}}), "Sat Mar 10 5:16:17 2001"), + ?_assertEqual(format("D M j H:i:s Y", {{2001,3,10},{5,16,17}}), "Sat Mar 10 05:16:17 2001"), ?_assertEqual(format("ga",?DATE_NOON), "12pm"), ?_assertEqual(format("gA",?DATE_NOON), "12PM"), ?_assertEqual(format("ga",?DATE_MIDNIGHT), "12am"),