055:时间处理
描述
求从给定时刻开始过了给定时间后的时刻。
输入
有若干组数据。
每组数据有2行,第一行是给定时刻,可能有两种格式
格式1) 年 月 日 时 分(时是24小时制)
格式2) 月-日-年 时:分 上下午 (时是12小时制,注意没有秒)
第二行是时间增量,也可能有两种格式
格式1) 一个整数,代表多少秒
格式2) 日 时 分
输出
对每组数据,输出给定时刻加上时间增量后的新时刻,24小时制
格式如: 1982-12-10 12:12:28
样例输入
1982 12 1 23 0 737848 1982 12 1 23 15 180 2 18 12-01-1982 1:23 AM 737848
样例输出
1982-12-10 11:57:28 1983-05-31 01:33:00 1982-12-09 14:20:28
mon=[0,31,28,31,30,31,30,31,31,30,31,30,31]
while True:
try:
s=input().split()# 先想的是输入,就是从这开始,因为有两种输入,以字串的长度来判断是哪个
n=len(s)#这是依据,是5的话,是一种输入方法
ss=0
if n==5: #在这5个中,分别是年,月日和时分,保存下来
y=int(s[0])
m=int(s[1])
r=int(s[2])
h=int(s[3])
f=int(s[4])
else: #另一种输入方法,以分割字串来保存年月日时分
y=int(s[0][6:10])
m=int(s[0][0:2])
r=int(s[0][3:5])
s1=s[1].split(':')
h=int(s1[0])
f=int(s1[1])
if s[2]=='PM' or s[2]=='pm':
h=h+12
s=input().split() #这是输入的第二行了,也以输入的长度来判断
n=len(s)
if n==3: #如果是3个字串:就是日 时 分
r1=int(s[0])
h1=int(s[1])
f1=int(s[2])
ss=0
else: #一个字串,就是秒 分别求出日 时 分 秒
r1=int(int(s[0])//(24*60*60))
h1=int(int(s[0])%(24*60*60)//(60*60))
f1=int(int(s[0])%(60*60)//60)
ss=int(s[0])%60
f=f+f1#从小处着手,算分,大于60,就向时进
h+=f//60+h1 #加到原时和后时上
f=f%60
r1=h//24+r1#时大于24吗
h=h%24
if y%4==0 and y%100!=0 or y%400==0:
mon[2]=29 #看下年是闰年吗,防从1月分开始
for i in range(1,r1+1):#把每天加上到相应的月中
r+=1
if r>mon[m]:#大于当月的天数
r=1 #日为1
m=m+1 #月加1
if m>12: #如果超过年了
y+=1
m=1
yun=int(y%4==0 and y%100!=0 or y%400==0)
if yun:
mon[2]=29
else:
mon[2]=28
print("%d-%02d-%02d %02d:%02d:%02d"%(y,m,r,h,f,ss))
except:
break