summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorpgkos <pg.kosinski@gmail.com>2018-11-06 22:29:23 +0100
committerArne Döring <arne.doering@gmx.net>2018-11-06 22:29:23 +0100
commitb9cdad74979b6581e0100440a1e565fa48d27d3c (patch)
treecfbae30094c3520f3dd66f6860ff55934c4c2838
parent73c306258b6e0e82cc977a8a5ce3e21c32ea8942 (diff)
downloadNim-b9cdad74979b6581e0100440a1e565fa48d27d3c.tar.gz
times - remove unneeded negative sign when parsing formats z and zz (#9631)
* fix wrong utcoffset sign for formats z and zz

* add tests for the timezone offset formats
-rw-r--r--lib/pure/times.nim6
-rw-r--r--tests/stdlib/ttimes.nim9
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/pure/times.nim b/lib/pure/times.nim
index 62284c6cb..ae412eaf0 100644
--- a/lib/pure/times.nim
+++ b/lib/pure/times.nim
@@ -2026,9 +2026,9 @@ proc parsePattern(input: string, pattern: FormatPattern, i: var int,
       var offset = 0
       case pattern
       of z:
-        offset = takeInt(1..2) * -3600
+        offset = takeInt(1..2) * 3600
       of zz:
-        offset = takeInt(2..2) * -3600
+        offset = takeInt(2..2) * 3600
       of zzz:
         offset.inc takeInt(2..2) * 3600
         if input[i] != ':':
@@ -2508,4 +2508,4 @@ proc zoneInfoFromUtc*(zone: Timezone, time: Time): ZonedTime
 proc zoneInfoFromTz*(zone: Timezone, adjTime: Time): ZonedTime
     {.deprecated: "Use zonedTimeFromAdjTime instead".} =
   ## **Deprecated since v0.19.0:** use the ``zonedTimeFromAdjTime`` instead.
-  zone.zonedTimeFromAdjTime(adjTime)
\ No newline at end of file
+  zone.zonedTimeFromAdjTime(adjTime)
diff --git a/tests/stdlib/ttimes.nim b/tests/stdlib/ttimes.nim
index 660c9325f..7ebbe61d9 100644
--- a/tests/stdlib/ttimes.nim
+++ b/tests/stdlib/ttimes.nim
@@ -84,6 +84,15 @@ template runTimezoneTests() =
     # formatting timezone as 'Z' for UTC
     parseTest("2001-01-12T22:04:05Z", "yyyy-MM-dd'T'HH:mm:ss" & tzFormat,
         "2001-01-12T22:04:05Z", 11)
+  # timezone offset formats
+  parseTest("2001-01-12T15:04:05 +7", "yyyy-MM-dd'T'HH:mm:ss z",
+      "2001-01-12T08:04:05Z", 11)
+  parseTest("2001-01-12T15:04:05 +07", "yyyy-MM-dd'T'HH:mm:ss zz",
+      "2001-01-12T08:04:05Z", 11)
+  parseTest("2001-01-12T15:04:05 +07:00", "yyyy-MM-dd'T'HH:mm:ss zzz",
+      "2001-01-12T08:04:05Z", 11)
+  parseTest("2001-01-12T15:04:05 +07:30:59", "yyyy-MM-dd'T'HH:mm:ss zzzz",
+      "2001-01-12T07:33:06Z", 11)
   # Kitchen     = "3:04PM"
   parseTestTimeOnly("3:04PM", "h:mmtt", "15:04:00")