python主要有三种时间格式:
- 时间戳:一个浮点数,表示当前时间与1970年1月1日0时0分0秒的差值,单位为秒
- 格式化时间:由字母和数字组的时间表示形式,比如’Mon Nov 13:02:35 2019‘
- 时间元组:以元组的形式表示时间,9项参数,比如:(tm_year=2019, tm_mon=11, tm_mday=2, tm_hour=16, tm_min=54, tm_sec=31, tm_wday=3, tm_yday=306, tm_isdst=0)
python的时间模块time对于这三者的转换关系如图:
格式化符号含义
格式 | 含义 | 备注 |
%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 | 秒 | 0–61(60、61为闰秒) |
%U | 一年中的星期数。 | 00 - 53星期天是一个星期的开始;第一个星期天之前的所有天数都放在第0周。 |
%w | 一个星期中的第几天 | 0 - 6,0是星期天 |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 | |
%x | 本地相应日期 | |
%X | 本地相应时间 | |
%y | 去掉世纪的年份 | 00 - 99 |
%Y | 完整的年份 | 四位数,如2019 |
%Z | 时区的名字(如果不存在为空字符) | |
%% | ‘%’字符 |
时间元组参数含义
time模块常用函数
time.time()
获取当前的时间戳
import time
t = time.time()
print(f'当前时间戳为:{t}')
# 当前时间戳为:1573265697.5222402
time.gmtime(sec)
将当前时区的时间戳转化为UTC的时间元组,即格林乔治时间的时间元组
参数 sec :需要转化的时间戳,默认是当前的时间戳time.time()
g_time = time.gmtime(t)
print(f'{t}的格式乔治时间为{g_time}')
# 1573265697.5222402的格林乔治时间为time.struct_time(tm_year=2019, tm_mon=11, tm_mday=9, tm_hour=2, tm_min=14, tm_sec=57, tm_wday=5, tm_yday=313, tm_isdst=0)
g_time1 = time.gmtime()
print(f'当前时间的格林乔治时间为{g_time1}')
# 当前时间的格林乔治时间为time.struct_time(tm_year=2019, tm_mon=11, tm_mday=9, tm_hour=2, tm_min=23, tm_sec=0, tm_wday=5, tm_yday=313, tm_isdst=0)
time.localtime(sec)
将当前时区的时间戳转化为当前时区的时间元组
参数 sec:需要转化的时间戳,默认是当前的时间戳time.time()
l_time = time.localtime()
print(f'当前时间的时间元组为{l_time}')
# 当前时间的时间元组为time.struct_time(tm_year=2019, tm_mon=11, tm_mday=9, tm_hour=10, tm_min=26, tm_sec=45, tm_wday=5, tm_yday=313, tm_isdst=0)
time.mktime(t)
将时间元组转化为当前时区的时间戳,返回一个浮点数,小数部分为0,与time.localtime()相反
参数 t : 需要转化的时间元组
m_time = time.mktime(t=time.localtime())
print(f'时间戳为{m_time}')
# print(f'时间戳为{m_time}')
# 时间戳为1573268231.0
时间格式化函数: time.strftime()和time.strptime()
- time.strftime(format, struct_time) : 将时间元组转化为规定的时间格式
参数 format:格式化符号
参数 struct_time: 需要转化的时间元组,默认为time.localtime()
sf_time = time.strftime('%Y-%m-%d %H:%M:%S')
print(f'当前时间为:{sf_time}')
# 当前时间为:2019-11-09 10:37:26
- time.strptime(string, format):将时间字符串转化为时间元组
参数 string: 需要转化的时间字符串,如 ‘2019-11-09’
参数 format: 格式字符。默认是 “%a %b %d %H:%M:%S %Y”
**注意:**设置format参数时,需与前面的string格式一致;即string设为’2019-11-09’,则format为’%Y-%m-%d’
sp_time = time.strptime('2019-11-09', '%Y-%m-%d')
print(f'2019-11-09的时间元组为:\n{sp_time}')
# 2019-11-09的时间元组为:
# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=313, tm_isdst=-1)
time.asctime()
将表示time.gmtime()或time.localtime()返回的时间的tuple或struct_time转换为以下形式的字符串:“Sun Jun 20 23:21:05 1993”。如果没有提供t,则使用localtime()返回的当前时间。asctime()不使用区域信息。
asc_time = time.asctime()
print(asc_time)
# 'Sat Nov 9 11:26:00 2019'
time.sleep(sec)
时间休眠函数,让程序暂停sec秒
参数 sec :需要休眠的时间
def show():
print(f"此时为:{time.strftime('%H:%M:%S')}")
time.sleep(5) # 休眠5秒
print(f"休眠5秒后:{time.strftime('%H:%M:%S')}")
show()
# 时为:11:36:21
# 休眠5秒后:11:36:26