implement text.parse_datetime()

pull/251/head
Mike Fährmann 5 years ago
parent 049e9fd6ce
commit d09864b581
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -223,6 +223,20 @@ def parse_timestamp(ts, default=None):
return default
def parse_datetime(date_string, format="%Y-%m-%dT%H:%M:%S%z"):
"""Create a datetime object by parsing 'date_string'"""
try:
d = datetime.datetime.strptime(date_string, format)
o = d.utcoffset()
if o is not None:
d = d.replace(tzinfo=None) - o # convert to naive UTC
return d
except TypeError:
return None
except (ValueError, OverflowError):
return date_string
if os.name == "nt":
clean_path = clean_path_windows
else:

@ -350,6 +350,21 @@ class TestText(unittest.TestCase):
self.assertEqual(f(value), None)
self.assertEqual(f(value, "foo"), "foo")
def test_parse_datetime(self, f=text.parse_datetime):
null = datetime.datetime.utcfromtimestamp(0)
self.assertEqual(f("1970-01-01T00:00:00+00:00"), null)
self.assertEqual(f("1970.01.01", "%Y.%m.%d") , null)
self.assertEqual(
f("2019-05-07T21:25:02+09:00"),
datetime.datetime(2019, 5, 7, 12, 25, 2),
)
for value in INVALID:
self.assertEqual(f(value), None)
self.assertEqual(f("1970.01.01"), "1970.01.01")
if __name__ == '__main__':
unittest.main()

Loading…
Cancel
Save