diff options
author | Badlop <badlop@process-one.net> | 2010-11-29 13:33:56 +0100 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2010-11-29 14:36:09 +0100 |
commit | 26ac75bdc9be8207533bfd9836039c4af91f0598 (patch) | |
tree | 86fe03d378c96dbf41882d3f34954252badda009 /src | |
parent | Don't loop when there is nothing after a stream start (diff) |
Support negative part-hour TZ values (thanks to Alexander Zhukov)(EJAB-1301)
Diffstat (limited to 'src')
-rw-r--r-- | src/jlib.erl | 4 | ||||
-rw-r--r-- | src/mod_time.erl | 13 |
2 files changed, 7 insertions, 10 deletions
diff --git a/src/jlib.erl b/src/jlib.erl index 4adf8879..cb70c5a4 100644 --- a/src/jlib.erl +++ b/src/jlib.erl @@ -561,7 +561,7 @@ rsm_encode_count(Count, Arr)-> i2l(I) when is_integer(I) -> integer_to_list(I); i2l(L) when is_list(L) -> L. -%% Timezone = utc | {Hours, Minutes} +%% Timezone = utc | {Sign::string(), {Hours, Minutes}} | {Hours, Minutes} %% Hours = integer() %% Minutes = integer() timestamp_to_iso({{Year, Month, Day}, {Hour, Minute, Second}}, Timezone) -> @@ -572,6 +572,8 @@ timestamp_to_iso({{Year, Month, Day}, {Hour, Minute, Second}}, Timezone) -> Timezone_string = case Timezone of utc -> "Z"; + {Sign, {TZh, TZm}} -> + io_lib:format("~s~2..0w:~2..0w", [Sign, TZh, TZm]); {TZh, TZm} -> Sign = case TZh >= 0 of true -> "+"; diff --git a/src/mod_time.erl b/src/mod_time.erl index e96c0ea7..52c52502 100644 --- a/src/mod_time.erl +++ b/src/mod_time.erl @@ -76,14 +76,8 @@ process_local_iq(_From, _To, #iq{type = Type, sub_el = SubEl} = IQ) -> {UTC, UTC_diff} = jlib:timestamp_to_iso(Now_universal, utc), Seconds_diff = calendar:datetime_to_gregorian_seconds(Now_local) - calendar:datetime_to_gregorian_seconds(Now_universal), - {Hd, Md, _} = case Seconds_diff >= 0 of - true -> - calendar:seconds_to_time(Seconds_diff); - false -> - {Hd0, Md0, Sd0} = calendar:seconds_to_time(-Seconds_diff), - {-Hd0, Md0, Sd0} - end, - {_, TZO_diff} = jlib:timestamp_to_iso({{0, 0, 0}, {0, 0, 0}}, {Hd, Md}), + {Hd, Md, _} = calendar:seconds_to_time(abs(Seconds_diff)), + {_, TZO_diff} = jlib:timestamp_to_iso({{0, 0, 0}, {0, 0, 0}}, {sign(Seconds_diff), {Hd, Md}}), IQ#iq{type = result, sub_el = [{xmlelement, "time", [{"xmlns", ?NS_TIME}], @@ -93,4 +87,5 @@ process_local_iq(_From, _To, #iq{type = Type, sub_el = SubEl} = IQ) -> [{xmlcdata, UTC ++ UTC_diff}]}]}]} end. - +sign(N) when N < 0 -> "-"; +sign(_) -> "+". |