关于简单python日期计算

关于简单python日期计算,python,date-arithmetic,Python,Date Arithmetic,我想知道一个人何时会变老10亿秒。用户在他们出生时输入。然后将这些值转换为秒,再加上10亿秒,再转换回日期。然而,当我输入某些日期时,python似乎陷入混乱。这样一个例子是1993/11/05 00:00:00,python说用户将在第0个月上班。 注:我不能使用if/else或datetime 这是我的密码: YEARSEC=(12*30*24*3600) MONTHSEC=(3600*24*30) DAYSEC=(24*3600) HOURSEC=3600 MINUTESEC=60

我想知道一个人何时会变老10亿秒。用户在他们出生时输入。然后将这些值转换为秒,再加上10亿秒,再转换回日期。然而,当我输入某些日期时,python似乎陷入混乱。这样一个例子是1993/11/05 00:00:00,python说用户将在第0个月上班。 注:我不能使用if/else或datetime

这是我的密码:

YEARSEC=(12*30*24*3600) 
MONTHSEC=(3600*24*30) 
DAYSEC=(24*3600)
HOURSEC=3600
MINUTESEC=60

year=int(input("Please enter the year in which you were born: ")) 
month=int(input("Please enter the month you were born: "))    
day=int(input("Please enter the day you were born: "))
hour=int(input("Please enter the hour you were born: "))
minute=int(input("Please enter the minute you were born: "))
second=int(input("Please enter the second you were born: "))

year_calc=(year*YEARSEC)  
month_calc=(month*MONTHSEC)
day_calc=(day*DAYSEC)
hour_calc=(hour*HOURSEC)
minute_calc=(minute*MINUTESEC)
s=(1000000000+year_calc+month_calc+day_calc+hour_calc+minute_calc+second) 


year_num=int((s/YEARSEC)) 
s=(s-(year_num*YEARSEC))


month_num=int((s/MONTHSEC))
s=(s-(month_num*MONTHSEC))


day_num=int((s/DAYSEC))
s=(s-(DAYSEC*day_num))

hour_num=int((s/HOURSEC))
s=(s-(HOURSEC*hour_num))

minute_num=int((s/MINUTESEC))
s=(s-(MINUTESEC*minute_num))




print("You will turn 1 000 000 000 seconds old on: %04d/%02d/%02d %02d:%02d:%02d" %(year_num,month_num,day_num,hour_num,minute_num,s))

时间的计算很复杂。例如,月份并不都有30天。小时、分钟和秒的编号从0开始,但天和月的编号从1开始,在计算中以1为单位创建错误(提示,询问月份,然后减去1,执行所有计算,然后在再次显示时添加1)。你也没有考虑闰年

最好使用内置工具,即使只是检查你最终的家庭作业答案,尽管看起来像老师说的假设30天一个月;^)


虽然我还没有全部测试过,但我认为你不可能在12月和30日完成测试。 您应该加上1到
day\u num
month\u num
使月份和日期从1开始,而不是从0开始

print("You will turn 1 000 000 000 seconds old on: %04d/%02d/%02d %02d:%02d:%02d" %(year_num,month_num+1,day_num+1,hour_num,minute_num,s))

如果不使用
datetime
正确地执行此操作,将会是一个糟糕的局面。。。你为什么说你不能用它?可能是他的家庭作业;)我知道约会时间是最好的方式。但我不能。是的,它说假设一个月30天。但是非常感谢
print("You will turn 1 000 000 000 seconds old on: %04d/%02d/%02d %02d:%02d:%02d" %(year_num,month_num+1,day_num+1,hour_num,minute_num,s))