我有一个代码要求,其中“过期日期”应为字符串格式的当前日期的+3天。以下是我的代码,
import datetime
now = datetime.datetime.utcnow() #Today's date is '2/11/2017'
expires_at = '%d/%d/%d' % (now.day + 3, now.month, now.year)
这完美地工作,输出类似于预期的“5/11/2017”。但是,当前日期为28或29时,此代码会中断。 Python以某种方式将日期添加到33rd而不是跳到本月的第1天。我已经完成了我的研究并找到了一个可以在Python控制台中运行的解决方案(下面),但是无法在Selenium Web Driver和Pycharm下运行。
>>> from datetime import datetime, timedelta
>>> m = '29/10/2017'
>>> date = datetime.strptime(m, "%d/%m/%Y")
>>> modified_date = date + timedelta(days=3)
>>> datetime.strftime(modified_date, "%d/%m/%Y")
'01/11/2017'
在pycharm下运行相同的代码时,会发生以下错误:
Error
Traceback (most recent call last):
date = datetime.strptime(m, "%d/%m/%Y")
Exception: module 'datetime' has no attribute 'strptime'
感谢任何帮助。如果有人好奇,我正在使用python 3.6.1。可能缺少一些非常小的东西(2个可能的解决方案,但没有一个工作),但坚持这个代码3天,无法找到正确的解决方案。
答案 0 :(得分:1)
确保您的代码中没有以下内容:
import datetime
如果你这样做,它会崩溃。像:
from datetime import datetime, timedelta
import datetime
m = '29/10/2017'
date = datetime.strptime(m, "%d/%m/%Y")`
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'datetime' has no attribute 'strptime'
答案 1 :(得分:0)
在上一张海报的帮助下,我发现我正在处理一些问题 1)我从datetime import datetime,timedelta&#34;添加&#34;和&#34;导入日期时间&#34;一起。删除其中一个解决了我的大部分问题。 2)要使用&#34;从datetime import datetime&#34;获取当前日期,我执行了以下操作:
from datetime import datetime
now = "{:%Y_%m_%d}".format(datetime.now())
print(now)
我得到的输出是,
'2017_11_03' #today's date
我只需要指定&#39; datetime&#39;曾经,即&#34; datetime.now()&#34;因为我正在导入课程&#34; datetime&#34;来自&#34; datetime&#34;模块。