add optional 'utcoffset' argument to 'parse_datetime()'
This commit is contained in:
parent
6c531be294
commit
a0f4c295c0
@ -233,7 +233,7 @@ def parse_timestamp(ts, default=None):
|
||||
return default
|
||||
|
||||
|
||||
def parse_datetime(date_string, format="%Y-%m-%dT%H:%M:%S%z"):
|
||||
def parse_datetime(date_string, format="%Y-%m-%dT%H:%M:%S%z", utcoffset=0):
|
||||
"""Create a datetime object by parsing 'date_string'"""
|
||||
try:
|
||||
if format.endswith("%z") and date_string[-3] == ":":
|
||||
@ -244,7 +244,11 @@ def parse_datetime(date_string, format="%Y-%m-%dT%H:%M:%S%z"):
|
||||
d = datetime.datetime.strptime(ds, format)
|
||||
o = d.utcoffset()
|
||||
if o is not None:
|
||||
d = d.replace(tzinfo=None) - o # convert to naive UTC
|
||||
# convert to naive UTC
|
||||
d = d.replace(tzinfo=None) - o
|
||||
elif utcoffset:
|
||||
# apply manual UTC offset
|
||||
d += datetime.timedelta(0, utcoffset * -3600)
|
||||
return d
|
||||
except (TypeError, IndexError, KeyError):
|
||||
return None
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2015-2018 Mike Fährmann
|
||||
# Copyright 2015-2020 Mike Fährmann
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
@ -375,6 +375,10 @@ class TestText(unittest.TestCase):
|
||||
f("2019-05-07T21:25:02+0900"),
|
||||
datetime.datetime(2019, 5, 7, 12, 25, 2),
|
||||
)
|
||||
self.assertEqual(
|
||||
f("2019-05-07T21:25:02", "%Y-%m-%dT%H:%M:%S", utcoffset=9),
|
||||
datetime.datetime(2019, 5, 7, 12, 25, 2),
|
||||
)
|
||||
self.assertEqual(
|
||||
f("2019-05-07 21:25:02"),
|
||||
"2019-05-07 21:25:02",
|
||||
|
Loading…
x
Reference in New Issue
Block a user