我正在尝试从当前时间中减去格式化的strptime日期时间。为了减去格式化时间,您必须将格式化日期时间转换回常规日期时间对象,因此它不再是字符串。但是,执行此操作时,导入模块似乎不正确。如果执行from datetime import *,则表示该模块没有日期时间;如果执行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'
答案 0 :(得分:0)
需要保持一致性。如果您import datetime
,请记住访问datetime
模块中的datetime
对象 。
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
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
答案 1 :(得分:0)
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()
答案 2 :(得分:0)
您需要从datetime模块导入datetime类。为此,您需要编写-from datetime import datetime
。现在您可以使用datetime.strptime()
。