]> granicus.if.org Git - ejabberd/commitdiff
Support timezone West of UTC (thanks to Edwin Fine)(EJAB-1301)
authorBadlop <badlop@process-one.net>
Mon, 13 Sep 2010 10:05:10 +0000 (12:05 +0200)
committerBadlop <badlop@process-one.net>
Mon, 13 Sep 2010 10:06:13 +0000 (12:06 +0200)
src/mod_time.erl

index a8a43c0ab3c0265415a80eab1b1fb53c616d0bb8..e96c0ea72b18a340e3d079386f1eb4b2411a020d 100644 (file)
@@ -76,7 +76,13 @@ 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, _} = calendar:seconds_to_time(Seconds_diff),
+            {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}),
            IQ#iq{type = result,
                  sub_el = [{xmlelement, "time",