Я в странной ситуации, когда у меня есть json файл, из которого я читаю дату в string
формате. Затем я разбираю его с помощью dateutil.parser.parse
.
Конечный объект datetime
выглядит так:
2015-08-22 14:06:03-07:00
Мне нужно вычесть его из текущего времени и получить общее количество дней. Который я могу легко сделать, но проблема в том, что я не всегда знаю формат вышеуказанного datetime
из файла (в некоторых файлах он смещен, а в других случаях это не так).
datetime.datetime.now()
дает 2018-10-14 14:10:44.532932
Есть ли способ вычесть любой формат datetime
из текущего datetime
.
Пример,
Формат в файле может вернуться,
2015-08-22 14:06:03-07:00
или же
2015-08-22 14:06:03.4421-07:00
или что-то другое
Текущее время даты возвращается 2018-10-14 14:19:10.510259
но разобрано datetime
возвращает 2013-06-20 13:39:30-07:00
. Я знаю, что оба являются объектами datetime
но когда я вычитаю это, я получаю
TypeError: can't subtract offset-naive and offset-aware datetimes
Я хочу, чтобы вычесть любой из этих форматов из текущего времени и времени.
Вы должны установить часовой пояс, когда вы получите текущее время.
from datetime import datetime
from dateutil.parser import parse
from pytz import timezone
et = timezone('US/Eastern')
x = parse('2015-08-22 14:06:03.4421-07:00')
y = datetime.now(tz=et)
print(y-x)
dateutil.parser.parse
, вы получите объектdatetime
независимо от формата. Почему формат имеет значение после этого момента?2018-10-14 14:19:10.510259
но проанализированная2018-10-14 14:19:10.510259
-2013-06-20 13:39:30-07:00
я2013-06-20 13:39:30-07:00
ее, я получаюTypeError: can't subtract offset-naive and offset-aware datetimes