summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/times.nim15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/pure/times.nim b/lib/pure/times.nim
index 1e869d301..f74003820 100644
--- a/lib/pure/times.nim
+++ b/lib/pure/times.nim
@@ -732,6 +732,7 @@ const
   secondsInMin = 60
   secondsInHour = 60*60
   secondsInDay = 60*60*24
+  minutesInHour = 60
   epochStartYear = 1970
 
 proc formatToken(info: TimeInfo, token: string, buf: var string) =
@@ -824,21 +825,21 @@ proc formatToken(info: TimeInfo, token: string, buf: var string) =
     buf.add(fyear)
   of "z":
     let hours = abs(info.timezone) div secondsInHour
-    if info.timezone < 0: buf.add('-')
-    else: buf.add('+')
+    if info.timezone <= 0: buf.add('+')
+    else: buf.add('-')
     buf.add($hours)
   of "zz":
     let hours = abs(info.timezone) div secondsInHour
-    if info.timezone < 0: buf.add('-')
-    else: buf.add('+')
+    if info.timezone <= 0: buf.add('+')
+    else: buf.add('-')
     if hours < 10: buf.add('0')
     buf.add($hours)
   of "zzz":
     let
       hours = abs(info.timezone) div secondsInHour
-      minutes = abs(info.timezone) mod 60
-    if info.timezone < 0: buf.add('-')
-    else: buf.add('+')
+      minutes = (abs(info.timezone) div secondsInMin) mod minutesInHour
+    if info.timezone <= 0: buf.add('+')
+    else: buf.add('-')
     if hours < 10: buf.add('0')
     buf.add($hours)
     buf.add(':')