由于我是python的新手,因此我需要代码帮助。我在代码中使用DateTime库来了解当前日期时间和doy1来查找一年中的某天。
我尝试使用带有不同模块的空闲的python 3.6,之后,我使用Visual Studio社区2017(仅出于我的满意),但这显示了一个错误。我知道这不是工具问题,但我只是尝试过。
import datetime
from dateutil import parser
from datetime import datetime
ask=input("enter date\n")
date_format = "%Y-%m-%d"
date_time = datetime.strptime(ask, date_format)
Current_date = datetime.strptime((str(datetime.now().date())), date_format)
print(Current_date)
doy1=date_time.strftime("%j")# day of year
date=datetime.now()
doy2=date.strftime("%j")
if(doy1<doy2):
diff_of_dates=abs(int(doy1)-int(doy2))
print(diff_of_dates)
diff=diff_of_dates+1
for i in range(1,diff):
avg_20=int(doy1)+1
print(doy1)
temp_date=datetime.date(date_format)+datetime.timedelta(doy1-1)
print("Difference of day",temp_date)
#ERROR
Traceback (most recent call last):
File "C:\Users\Muahr\source\repos\RCAI-Project\Pest\temperature.py", line 157, in <module>
temp_date=datetime.date(date_format)+datetime.timedelta(doy1-1)
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'str'
答案 0 :(得分:1)
我想我用下面的代码解决了一些问题。基本上,您是在datetime.date()对象中放置了一个字符串。您使用的字符串是date_format变量,该变量在下一行定义了date_time变量。当您分配temp_date时,我放入了date_time变量,该错误消失了。
我发现您调用timedelta的方式存在第二个问题,我取下了datetime前缀并导入了timedelta,这解决了这一问题。下面的代码可以运行,但是不会执行您在调用timedelta时选择的计算。
temp_date=datetime.date(date_time)+timedelta()
还更改了类导入行:
from datetime import datetime, timedelta
答案 1 :(得分:0)
我了解到您正在尝试获取两个日期之间的差,并一次打印一天的中间日期。
我删除了代码的某些部分以简化代码,并提出了可行的代码
编辑:此代码假定用户输入的日期总是早于当前日期。您可以更新逻辑以检查较大的日期并相应地找到差异
import datetime
from datetime import datetime
from datetime import timedelta
ask=input("enter date\n")
date_format = "%Y-%m-%d"
day1 = datetime.strptime(ask, date_format)
day2 = datetime.strptime((str(datetime.now().date())), date_format)
diff_of_dates = day2 - day1
diff=diff_of_dates.days
for i in range(1,diff):
temp_date=day1+timedelta(days=i)
print("Difference of day",datetime.strftime(temp_date, date_format))
输出
> python test.py
enter date
2019-03-28
Difference of day 2019-03-29
Difference of day 2019-03-30
Difference of day 2019-03-31