python中的Datetime错误有什么解决方案吗?

时间:2019-04-01 05:18:20

标签: python

由于我是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'

2 个答案:

答案 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