python datetime 应用题

    科技2022-08-25  98

    datetime提供了一系列方便的日期计算工具,可以处理许多时日期相关的计算。 (当然关键是避免手动处理闰年的进位问题)

    代码提交地址:http://acm.zjnu.edu.cn/CLanguage/contests/1170/problems/1003.html

    import datetime as dt import bisect ''' @Source: myself @Author: Tieway59 @Description: 输入一个'%d.%m.%Y.'的日期,输出下一个日月年回文的日期。 - strftime 表示时间格式化字符串 - strptime 表示模式匹配读入时间 - datetime.timedelta(days=1) 表示设定一个时间变化量,可以用来加减 - bisect.bisect_left 二分查找第一个大于等于x的下标 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(0001-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身 ''' ''' s = dt.datetime.strptime('01.01.0001.', '%d.%m.%Y.') # t = dt.datetime.strptime('31.12.9999.', '%d.%m.%Y.') # d = dt.timedelta(days=1) l = [...] # 打表 # def ispal(p) -> bool: # return p == p[::-1] # # # while cur < t: # if ispal(cur.strftime('%d%m%Y')): # l.append((cur - s).days) # cur = cur + d ans = [] n = int(input().strip()) for i in range(0, n): x = (dt.datetime.strptime(input().strip(), '%d.%m.%Y.') - s).days d = bisect.bisect_left(l, x + 1) ans.append((s + dt.timedelta(days=l[d])).strftime('%d.%m.%Y.')) print('\n'.join(ans)) ''' 1 02.02.2020. 2 01.01.1000. 31.12.2026. 3 01.01.0100. 05.07.0321. 05.05.0505. '''
    Processed: 0.010, SQL: 9