时间相关模块
时间相关模块
time模块
import time
1.睡眠 - sleep(时间)
time.sleep(2) # 表示在此电脑停顿2秒
2.获取当前时间戳 : - time()
t1 = time.time()
print(t1) # 1661476465.622042
时间戳: 通过时间差来表示具体的时间(指定时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单位:秒))
虽然我们经常会用时间 2022年x月x日 来表示 这时候电脑会用字符串形式保存这个数据。
时间戳的优点就体现出来了,保存数字肯定比保存字符串要省许多内存,所有以时间戳保存的优点在于
优点: 1.节省内存。 2.方便加密
3.获取本地时间 : localtime() — 返回值是结构体时间
默认值是当前时间,如果里面有时间戳,会将时间戳转化为结构体时间。
有一个比较另类的是python中,他会根据本地时间来计算时间差。
t2 = time.localtime()
print(
t2) # time.struct_time(tm_year=2022, tm_mon=8, tm_mday=26, tm_hour=9, tm_min=27, tm_sec=56, tm_wday=4(星期值,本来今天星期五,但是他从0开始的星期一), tm_yday=238(今年的第238天), tm_isdst=0)
print(t2.tm_mday)
print(time.localtime(
0)) # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
# 为什么是8小时,因为python会把时间差自动转换成当地时间。
4.将结构体时间转化成时间戳 mktime(结构体时间)
print(time.mktime(t2))
5.时间字符串和结构体时间之间的相互转换
1)结构体时间转换成字符串 - strftime(时间格式,结构体时间)
%Y:年份占位符
%m : 月数占位符
%d : 日数的占位符
%H: 以24小时制的,小时占位符
%M: 分钟数占位符
%S:秒数占位符
%Z:地区时间差(我打印出来:中国标准时间)
%a:简写星期数占位符(Sat)
%A:详细星期数占位符(Saturday)
%b:月份占位符
%B:详细月份占位符
%I: 以12小时制的,小时占位符
%p:AM或PM 占位符
result = time.strftime('%Y年%m月%d日', t2)
print(result)
2)字符串时间转换成结构体时间 - strptime(字符串时间,时间格式)
result1 = time.strptime('2021月3日4', '%Y月%m日%d')
print(result1)
datetime模块
from datetime import datetime,timedelta
1.datetime类
1)获取当前时间
t1 = datetime.today() # 和datetime.now()一样
print(t1, type(t1)) #2022-08-27 09:26:59.907219 <class 'datetime.datetime'>
2)根据时间值创建时间对象
t3 = datetime(2020, 12, 5)
print(t3)
t4 = datetime(2020, 12, 5, 12, 50, 30)
print(t4)
# 3)根据实际字符串创建时间对象
t5 = datetime.strptime('2021/3/5', '%Y/%m/%d')
print(t5)
# 4)单独获取具体的时间信息
print(t5.year)
print(t5.day)
print(t5.weekday()) # 星期值的取值范围:0-6,0表示星期一
# 5)将时间对象转换成字符串时间:datetime.strftime()
# xxxx年xx月xx日
result = t4.strftime('%Y年%m月%d日')
print(result)
# 6)求时间差:时间对象1 - 时间对象2
t1 = datetime(2022, 5, 3, 9, 10)
t2 = datetime(2022, 10, 1, 10, 5)
result = t2 - t1
print(result, type(result)) # 151 days, 0:55:00 <class 'datetime.timedelta'>
print(result.days)
print(result.seconds)
# 7)时间对象转换成结构体
result = t1.timetuple()
print(result)
# 8)时间对象转时间戳
result = t1.timestamp()
print(result)
# 2.timedelta - 时间间隔类
t1 = datetime(2020, 10, 1, 10, 8, 30)
print(t1)
# 10天以后对应的事件
result = t1 + timedelta(days=10)
print(result)
# 30天以前对应的时间
result = t1 - timedelta(days=30)
# 5天6小时之前
result = t1 - timedelta(days=5, hours=6)
print(result)
# 3周以后
result = t1 + timedelta(weeks=3)
print(result)