055:时间处理(python)

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值