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

1

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

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

  • 0
    Если вы используете dateutil.parser.parse , вы получите объект datetime независимо от формата. Почему формат имеет значение после этого момента?
  • 0
    Спасибо за ответ. текущая дата - 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
Теги:
python-3.x
datetime

1 ответ

1
Лучший ответ

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

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню