使用来自用户输入的日期和日期时间来计算日期之间的天数

时间:2019-04-01 11:35:54

标签: python date datetime

从用户输入中读取日期,格式为yyyy,mm,dd。然后找到日期之间的天数。日期时间需要整数,并且需要将输入从字符串转换为整数。先前的问题似乎涉及时间或操作系统不同,而这些建议似乎不适用于Anaconda和Win10。我尝试了那些似乎是针对Win10 OS的程序。用户输入变量是字符串,因此显然不能转换为整数格式。

我尝试了多种方法来转换为整数,并且datetime响应并显示错误,指示它需要整数,并且看到元组,列表或字符串。如果我直接输入日期值,则一切正常。我试过了-作为用户输入中的分隔符,仍然出现错误。我尝试将输入包装在(“”),“”,“'和()中,但仍然出现错误。我无法在标签中更具体地说明问题,但以下内容可能会对您有所帮助。我在Anaconda的Windows 10上使用python 2.6。由于某种原因,无法识别datetime.strptime,因此某些响应不起作用。

   InitialDate = input("Enter the begin date as yyyy,mm,dd")
   FinalDate = input("Enter the end date as yyyy,mm,dd")
   ID = InitialDate.split(",")
   ID2 = int(Id[0]),int(Id[1]),int(Id[2])
   Iday = datetime.datetime(Id2)
   Fd = FinalDate.split(",")
   Fd2 = int(Fd[0]),int(Fd[1]),int(Fd[2])
   Fday = datetime.datetime(Fd2)
   age = (Fd2 - Id2).day

我希望年龄是一个整数值。
我收到类型错误,在执行年龄行之前需要一个整数(获得类型元组)。

3 个答案:

答案 0 :(得分:2)

使用.strptime()将字符串date转换为date对象,然后计算diff

例如:

import datetime

InitialDate = "2019,02,10"  #input("Enter the begin date as yyyy,mm,dd")
FinalDate  = "2019,02,20"   #input("Enter the end date as yyyy,mm,dd")

InitialDate = datetime.datetime.strptime(InitialDate, "%Y,%m,%d")
FinalDate = datetime.datetime.strptime(FinalDate, "%Y,%m,%d")
age = (FinalDate - InitialDate).days
print(age)

输出:

10

答案 1 :(得分:0)

从日期时间导入日期时间

InitialDate = input(“以yyyy / mm / dd输入开始日期:”) FinalDate = input(“输入结束日期为yyyy / mm / dd:”)

InitialDate = datetime.strptime(InitialDate,'%Y /%m /%d') FinalDate = datetime.strptime(FinalDate,'%Y /%m /%d')

差异= FinalDate-InitialDate 打印(difference.days)

答案 2 :(得分:0)

我只是有一个类似的问题,我的解决方案是使用数组的值创建另一个整数。像这样:

ID = InitialDate.split(",")
 Id0 = Id[0]
 Id1 = Id[1]
 Id2 = Id[2]
 ID2 = int(Id0),int(Id1),int(Id2)
 Iday = datetime.datetime(Id2)
 Fd = FinalDate.split(",")
 Fd0 = Fd[0]
 Fd1 = Fd[1]
 Fd2 = Fd[2]
 Fd2 = int(Fd0),int(Fd1),int(Fd2)
 Fday = datetime.datetime(Fd2)
 age = (Fd2 - Id2).day