From 2f1b35b3fafaba80f69abff7ef946fc04613da9f Mon Sep 17 00:00:00 2001
From: gerard780 <gerard780@users.noreply.github.com>
Date: Mon, 30 Dec 2019 14:01:59 -0500
Subject: [PATCH] added support for timezones with - offset

introduced new regexp to better handle timestamps with a negative timezone offset like '2019-21-30T14:01:46.79231-05:00'
---
 pwnagotchi/plugins/default/webgpsmap.py | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/pwnagotchi/plugins/default/webgpsmap.py b/pwnagotchi/plugins/default/webgpsmap.py
index 3d7ae4d..f09f131 100644
--- a/pwnagotchi/plugins/default/webgpsmap.py
+++ b/pwnagotchi/plugins/default/webgpsmap.py
@@ -308,12 +308,17 @@ class PositionFile:
             if date_iso_formated.endswith("Z"):
               date_iso_formated = date_iso_formated[:-1] + "+00:00"
             # bad microseconds fix: fill/cut microseconds to 6 numbers
-            part1, part2, part3 = re.split('\.|\+', date_iso_formated)
+            parts = re.split('^(([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60))(\.[0-9]+)?(([Zz])|([\+|\-]([01][0-9]|2[0-3]):?[0-5][0-9]))$', date_iso_formated)
+
+            part1 = parts[1]
+            part2 = parts[8][1:]
+            part3 = parts[11]
+            
             part2 = part2.ljust(6, '0')[:6]
             # timezone fix: 0200 >>> 02:00
-            if len(part3) == 4:
-                part3 = part3[1:2].rjust(2, '0') + ':' + part3[3:4].rjust(2, '0')
-            date_iso_formated = part1 + "." + part2 + "+" + part3
+            if len(part3) == 5:
+                part3 = part3[0:1] + part3[1:2].rjust(2, '0') + ':' + part3[3:4].rjust(2, '0')
+            date_iso_formated = part1 + "." + part2 + part3
             dateObj = datetime.datetime.fromisoformat(date_iso_formated)
             return_ts = int("%.0f" % dateObj.timestamp())
         else: