蓝桥杯算法——解决日期类问题(对时间类算法水火不侵)

在这里插入图片描述

from datetime import datetime, timedelta

start=datetime(year=1970,month=1,day=1)
dela=timedelta(milliseconds=1)

now=int(input())
now=now*dela+start

print("%02d:%02d:%02d" %(now.hour,now.minute,now.second))

在这里插入图片描述

import datetime
#日期需要整型数据
date_input=input()
year=int(date_input[:4])
month=int(date_input[4: 6])
day = int(date_input[6: ])
days=datetime.timedelta(days=1)
date1=datetime.date(year,month,day)
flage=True#表示日期只需输出一次
for i in range(999999):
    date1+=days
    sd=str(date1).replace("-","")

    if sd[:] == sd[::-1]:#判断是不是回文日期 升序和降序相同
        if  flage:
            print(int(sd))
            flage=False#只输出一次
        if sd[0]==sd[2]==sd[5]==sd[7] and sd[1]==sd[3]==sd[4]==sd[6]:
            break
print(sd)

在这里插入图片描述

import datetime
year=datetime.date(1900,1,1)
days=datetime.timedelta(days=1)#每天不断递增1
for i in range(99999):#加了99999天
    new_year=str(year).replace("-","")
    year+=days#每天递增肯定是需要相加的
    if int(new_year) % 2012==0 and int(new_year) %3==0 and int(new_year)%12==0 and new_year[4:6]=='06':#转为可以除的类型并且告诉了月份,制定条件
        break
print(new_year)

在这里插入图片描述

strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定.
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-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 当前时区的名称
%% %号本身
在这里插入图片描述

import datetime

year,month, day=map(int,input().split())
date01=datetime.date(year,month,day)
print(date01.strftime("%j"))#strftime %j 输出某一年为一年中的第几天 包括区分闰年平年in

2020 年 7 月 1 日是*****成立 99 周年纪念日。
*****成立于 1921 年 7 月 23 日。
请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包含多少分钟?
#计算1921年到2020年多少天就行了,然后2460天数 然后加上12*60

import datetime
start=datetime.date(1921,7,23)
days=datetime.timedelta(days=1)
end=datetime.date(2020,7,1)

ans=0
while end>=start:#当时间重合之后结束循环
    ans += 1
    if start==end:
        break
    start+=days
print((ans-1)*24*60)#两边包含了当天 所以-1

在这里插入图片描述

import datetime
from datetime import datetime,timedelta
start=datetime(2000,1,1)
days=timedelta(days=1)
end=datetime(2020,10,1)
ans=0
while end>=start:
    if start.day==1 or start.weekday()==0:
        ans+=2
    else:
        ans+=1
    start+=days
print(ans)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_62491934/article/details/124028785