2023 备战蓝桥 时间模块总结

文章介绍了Python中time和datetime模块的使用,包括时间格式化、日期计算、回文日期判断等,还涉及了时间戳与日期对象的转换以及对星期几的判断方法。
摘要由CSDN通过智能技术生成

时间显示

😇收获

format的用法 {:0>2d} 以两位显示,不足右边补零
time.gmtime(秒数) :根据秒数(从1970年1月1日至现在的秒数) 转化为当前时间:
time.struct_time(tm_year=2033, tm_mon=5, tm_mday=18, tm_hour=0, tm_min=17, tm_sec=13, tm_wday=2, tm_yday=138, tm_isdst=0)
time.asctime(sec) 可见其转化为一个可读类型的字符串:Wed May 18 00:17:13 2033

sec = time.gmtime(n//1000) #可以根据输入的所给的秒数返回一个time.struct_time
time.asctime(sec)  # 可将time.struct_time类型的转化为一个可读类型的字符串
  • 解法一

求余表示剔除
# 时间显示
n = int(input())
n = n//1000 # 把毫秒转化为秒
n = n%86400 # 剔除掉完整一天以后所剩下的秒数
hour = int(n/3600) #小时
min = int(n%3600/60) #分钟
sec = int(n%3600%60) # 除去小时和分钟后所剩下的秒数
print("{:02d}:{:02d}:{:02d}".format(hour, min, sec))
  • 解法2

# 利用时间函数
import time
n = int(input())
sec = time.gmtime(n//1000) # 根据秒数返回:time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=13, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
s = time.asctime(sec)
print(s) # 返回一个可读类型的字符串 Thu Jan  1 13:00:00 1970
print(s[11:19]) # 13:00:00 再作字符串的切割求出我们想要的时间格式

星期几

😇收获

datetime 模块的使用:s.weekday() 周几的判断 s.month 月份的判断 s.day 日期的判断
from datetime import  datetime,timedelta
s = datetime(1949,10,1)
e = datetime(2012,10,1)
count = 0
while s<=e:
    if s.weekday()==6 and s.month ==10 and s.day==1:
        count += 1
    s += timedelta(1)
print(count)

星期几

n = int(input())
m = int(input())
if (n+m)%7==0:
    print(7)
else:
    print((n+m)%7)

datetime 模块中 time模块的使用

time 模块只能用来表示时间,不能用来表示日期
import datetime
now_time = datetime.time(hour=16,minute=49,second=49)
print(now_time) #16:49:49
print(now_time.hour)
print(now_time.minute)
print(now_time.second)

高斯日记

# 他表示那天是高斯出生后的第几天
from datetime import datetime,timedelta
birth = datetime(1777,4,30)
date_time = birth + timedelta(8113-1)
print(str(date_time)[0:10])
注意:单独使用date的时候要完整的导入datetime模块
# 他表示那天是高斯出生后的第几天
from datetime import datetime,timedelta
import datetime
b = datetime.date(1777,4,30)
date_time = b + timedelta(days=8113-1)
print(date_time)

黑色星期五

from datetime import datetime,timedelta
year = int(input())
s = datetime(year,1,1)
e = datetime(year,12,31)
count = 0
while s<=e:
    if s.isoweekday()==5 and s.day==13:
        count += 1
    s +=timedelta(1)
print(count)
calendar.weekday(2023,3,7) 返回给定的日期是星期几 0-6 表示周一到周天
import calendar
y = int(input())
count = 0
for i in range(1,13): 
    if calendar.weekday(y,i,13) == 4:
        count = count + 1
print(count)

回文日期

😇收获

注意在运用日期模块时若没有指明循环结束的日期,可设9999年;
导入基本全部常用的时间模块:from datetime import *
回文日期的判断可以用字符串的反转
可以将时间模块的日期转化为字符串来进行切割取出字符来操作判断
想要输出较小满足条件的值的时候可以在循环外面加一个局部变量,用局部变量的真假来进行控制
日期类时间转化为字符串的方法:
1、isoformat()
2、str()字符串类型的强制转化
因为字符串本身是不可变的,故可以通过replace来间解删除
from datetime import *
n = input() #"20200202"
year = n[:4]
month = n[4:6]
day = n[6:]
s = date(int(year),int(month) , int(day))
e = date(9999,12,31)
flag = 0 # flag的作用:表示输出最小的回文日期,输出完成之后就将其赋值为真,然后结束循环
while s<=e:
    s += timedelta(1)
    da = s.isoformat().replace("-",'')
    if da ==da[::-1]: # 回文日期的判断
        if flag == 0:
            print(da)
            flag = 1
            # ABABBABA型日期的判断
    if da[0] ==da[-1] ==da[2]==da[-3] and da[1]==da[3]==da[-2]==da[-4]:
        print(da)
        break

判断是一年中的第几天

time.strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。

time.strptime(string[, format]),传入string和format两个参数,分别是字符串和格式化字符串,返回的是struct_time

示例:

print(time.strptime("2020-12-10 10:45:00","%Y-%m-%d %H:%M:%S"))
输出
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=10, tm_hour=10, tm_min=45, tm_sec=0, tm_wday=3, tm_yday=345, tm_isdst=-1)
第一个参数是字符串,后一个参数你自己定义的格式化字符串,注意前后的语句格式要保持一致
import time
date= input() #YYYY-MM-DD
ans = time.strptime(date,"%Y-%m-%d")
print(ans[-2]) # 将时间元组里面想要的东西取出来
时间元组里包含很多的有效信息:年月日、时分秒、 该年的第几天,这天是星期几
  • 小结:

  • time.gimtime(秒数) ----快速的将秒数转化为一个时间元组

  • time.strptime(字符串,格式化的字符串)------快速将字符串转化为时间元组

  • 要想求某年某月的第一天是星期几和该月有几天用calendar.monthrange(年份,月份)

>>> calendar.monthrange(2022,3)
(1, 31)
2022年3月的第一天是周二和该月有31天
  • timedelta(days=1,weeks=40,hours=23,minutes=50,seconds=9) # 注意每个都是以复数结尾

时间戳和datetime的互转

  • 时间戳转datetime

datetime.fromtimestamp(秒数)

from datetime import datetime
time_seconds = 8885552
print(datetime.fromtimestamp(time_seconds))
1970-04-14 04:12:32
  • datetime转时间戳

datetime时间类.timestamp()

from datetime import datetime
t = datetime(2022,4,9)  #  1970-04-24 13:56:01
print(t.timestamp())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值