datetime刷题

继续昨天的datetime相关练习

2.顺子日期(蓝桥2096)

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?

import datetime

arr = datetime.date(2022, 1, 1)
brr = datetime.date(2022, 12, 31)

sss = ["012", "123", "234", "345", "456", "567", "678", "789"]
count = 0

while arr <= brr:
    date_now = arr.strftime("%Y%m%d")
    for i in sss:
        if i in date_now:
            count += 1
            break
    arr += datetime.timedelta(days=1)
print(count)

3.第十五届蓝桥杯 Python B 组省赛试题D:神奇闹钟

测评链接:https://www.dotcpp.com/oj/train/1120/
题目描述
小蓝发现了一个神奇的闹钟,从纪元时间(1970 年 1 月 1 日 00:00:00 )开始,每经过 x 分钟,这个闹钟便会触发一次闹铃(纪元时间也会响铃)。这引起了小蓝的兴趣,他想要好好研究下这个闹钟。

对于给出的任意一个格式为 yyyy-MM-dd HH:mm:ss 的时间,小蓝想要知道在这个时间点之前(包含这个时间点)的最近的一次闹铃时间是哪个时间?

注意,你不必考虑时区问题。

输入格式
输入的第一行包含一个整数 T,表示每次输入包含 T 组数据。

接下来依次描述 T 组数据。

每组数据一行,包含一个时间(格式为 yyyy-MM-dd HH:mm:ss )和一个整数 x ,其中 x 表示闹铃时间间隔(单位为分钟)。

输出格式
输出 T 行,每行包含一个时间(格式为 yyyy-MM-dd HH:mm:ss ),依次表示每组数据的答案。
样例输入

2
2016-09-07 18:24:33 10
2037-01-05 01:40:43 30

样例输出

2016-09-07 18:20:00
2037-01-05 01:30:00

提示
【评测用例规模与约定】

对于所有评测用例,1 ≤ T ≤ 10,1 ≤ x ≤ 1000,保证所有的时间格式都是合法的。

上一篇博客datetime写的不够全
datetime.fromisoformat 可以用于将符合 ISO 8601 格式的字符串解析为 datetime 对象

解题代码

import datetime

n = int(input())
arr = [input() for _ in range(n)]
date_0 = datetime.datetime.fromisoformat('1970-01-01 00:00:00')

for i in range(n):
    date_1 = datetime.datetime.fromisoformat(arr[i][0:19])
    time_1 = int(arr[i][20:])

    # 计算间隔(分钟)
    kkk = int((date_1 - date_0).total_seconds()) // 60
    # 去除余数
    kkk -= kkk % time_1

    print(date_0 + datetime.timedelta(minutes=kkk))
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值