python3 получает дельту strptime - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь вычесть отформатированное время strptime из текущего времени. Чтобы вычесть отформатированное время, вы должны преобразовать отформатированное время даты обратно в обычный объект даты и времени, чтобы оно больше не было строкой. Однако, когда это выполняется, модули импорта кажутся неуместными. Если вы делаете импорт из datetime *, то он говорит, что у модуля нет datetime, а если вы делаете datetime.datetime, то модуль говорит, что у него нет strptime.

>>> from datetime import *
>>> (datetime.datetime.now().astimezone(pytz.utc) - datetime.strptime(db_job_document['time_down'], "%Y-%m-%dT%H:%M:%S")).total_seconds()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> import datetime
>>> (datetime.datetime.now().astimezone(pytz.utc) - datetime.strptime(db_job_document['time_down'], "%Y-%m-%dT%H:%M:%S")).total_seconds()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'datetime' has no attribute 'strptime'

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

now и strptime оба являются методами класса объекта datetime в модуле datetime.Вы либо импортируете модуль datetime, а затем используете его как datetime.datetime (.datetime объект datetime модуля), либо напрямую импортируете сам объект datetime, а затем просто используете его как datetime:

>>> import datetime
>>> datetime.datetime.strptime(...)
>>> datetime.datetime.now()

>>> from datetime import datetime
>>> from datetime import *  # for all intents and purposes the same
>>> datetime.strptime(...)
>>> datetime.now()
0 голосов
/ 25 июня 2018

Вам необходимо импортировать класс datetime из модуля datetime. А для этого нужно написать - from datetime import datetime. Теперь вы можете использовать datetime.strptime().

0 голосов
/ 25 июня 2018

Необходима последовательность.Если вы import datetime, не забудьте получить доступ к объекту datetime в модуле datetime.

Опция 1

from datetime import *
# from datetime import datetime, also works in this case

print(datetime.now(), datetime.strptime('2018-01-01', '%Y-%m-%d'), sep='\n')

# 2018-06-25 16:38:39.775445
# 2018-01-01 00:00:00

Опция 2

import datetime

print(datetime.datetime.now(), datetime.datetime.strptime('2018-01-01', '%Y-%m-%d'), sep='\n')

# 2018-06-25 16:39:15.119183
# 2018-01-01 00:00:00  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...