вычесть объект datetime из текущего времени, если datetime может быть либо с учетом смещения, либо наивным - PullRequest
0 голосов
/ 14 октября 2018

Я нахожусь в странной ситуации, когда у меня есть файл 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

Я хочу иметь возможность вычесть любой из этих форматов из текущей даты и времени.

1 Ответ

0 голосов
/ 14 октября 2018

Вы должны установить часовой пояс, когда получите текущее время.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...