datetime、time模块
time模块
# 导入模块
import time
print('hello')
# 时间暂停/休眠方法,3秒
time.sleep(3)
print('world')
# 获取当前时间戳
# 时间戳,并非年月日形式
# 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
print(time.time())
# 获取本地时间元组
print(time.localtime())
# 获取0时区时间元组,也就是格林尼治地区时间
print(time.gmtime())
# 将时间元组转为时间戳
print(time.mktime(time.localtime()))
# 将时间元组转为时间字符格式
print(time.asctime(time.localtime()))
print(time.asctime(time.gmtime()))
# 将时间戳转为时间字符格式
print(time.ctime(time.time()))
# 将时间元组转为指定的时间字符格式
stftime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(stftime)
# 将时间字符格式转为时间元组
stptime = time.strptime(stftime, '%Y-%m-%d %H:%M:%S')
print(stptime)
输出结果为:
hello
world
1664969581.7100704
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=5, tm_hour=19, tm_min=33, tm_sec=1, tm_wday=2, tm_yday=278, tm_isdst=0)
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=5, tm_hour=11, tm_min=33, tm_sec=1, tm_wday=2, tm_yday=278, tm_isdst=0)
1664969581.0
Wed Oct 5 19:33:01 2022
Wed Oct 5 11:33:01 2022
Wed Oct 5 19:33:01 2022
2022-10-05 19:33:01
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=5, tm_hour=19, tm_min=33, tm_sec=1, tm_wday=2, tm_yday=278, tm_isdst=-1)
其中hello到world的输出,会出现3秒的时间间隔,也就是time.sleep(3)的作用
不同时间格式的表示方法
# 时间格式的表示方法
# %a 本地(locale)简化星期名称
# %A 本地完整星期名称
# %b 本地简化月份名称
# %B 本地完整月份名称
# %c 本地相应的日期和时间表示
# %d 一个月中的第几天(01 - 31)
# %H 一天中的第几个小时(24小时制,00 - 23)
# %I 第几个小时(12小时制,01 - 12)
# %j 一年中的第几天(001 - 366)
# %m 月份(01 - 12)
# %M 分钟数(00 - 59)
# %p 本地am或者pm的相应符
# %S 秒(01 - 61)
# %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)
# 第一个星期天之前的所有天数都放在第0周。
# %w 一个星期中的第几天(0 - 6,0是星期天)
# %W 和%U基本相同,不同的是%W以星期一为一个星期的开始
# %x 本地相应日期
# %X 本地相应时间
# %y 去掉世纪的年份(00 - 99)
# %Y 完整的年份
# %Z 时区的名字(如果不存在为空字符)
# %% ‘%’字符
datetime模块
datetime模块可以看成是time模块的一个封装方法,很多方法与time模块的方法类似
import datetime
# 获取当前日期
print(datetime.datetime.now())
# 设置日期对象
date1=datetime.datetime(year=2022, month=4, day=6, hour=10, minute=36, second=50)
print(date1)
# 查看年月日信息
print(date1.year, date1.month, date1.day)
# 获取当前年月日
print(date1.date())
# 获取时分秒信息
print(date1.hour, date1.minute, date1.second)
# 转为字符串类型
print(type(date1.strftime('%Y-%m-%d %H:%M:%S')))
print(date1.strftime('%Y{}%m{}%d{} %H{}%M{}%S{}').format('年', '月', '日', '时', '分', '秒'))
# 将字符串类型转为时间类型
date2 = date1.strftime('%Y-%m-%d %H:%M:%S')
print(datetime.datetime.strptime(date2, '%Y-%m-%d %H:%M:%S'))
print(type(datetime.datetime.strptime(date2, '%Y-%m-%d %H:%M:%S')))
# 时间戳转为日期
print(datetime.datetime.fromtimestamp(123456789))
# 时间差:datetime.timedelta(year,month,day,hour,minute,second)
dt = datetime.timedelta(days=5, hours=3, seconds=30)
print(date1+dt)
结果为:
2022-10-05 19:41:09.772176
2022-04-06 10:36:50
2022 4 6
2022-04-06
10 36 50
<class 'str'>
2022年04月06日 10时36分50秒
2022-04-06 10:36:50
<class 'datetime.datetime'>
1973-11-30 05:33:09
2022-04-11 13:37:20
time模块和datetime模块其实差别不大,功能上差不多,但各有长处,选择适合的就好
在时间格式的表示方法上都差不多的