使用Python进行开发时,经常会遇到处理时间的问题,本文主要介绍下时间模块中的time模块, time模块中时间表现的格式主要有三种:
- timestamp(时间戳),时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回时间戳的函数主要有time()、clock()。
- struct_time (时间元组),共有九个元素组,如,tm_year、tm_mon、tm_mday、tm_hour、tm_min、tm_sec、tm_wday、tm_yday、tm_isdst。返回时间元组的函数主要有gmtime(),localtime()。
- format time(格式化时间),格式化的结构使时间更具可读性,包括自定义格式和固定格式。
通过一张时间格式转换图,帮助我们清晰的认识time模块各方法的使用。
如上图,其中格式化时间和时间元组之间可以转换,时间戳与时间元组之间可以转化,但是时间戳和格式化时间是不能直接转换的。
timestamp 时间戳
时间戳 转 时间元组
time.localtime([secs]) 可以将timestamp时间戳转为时间元组(北京时间所属时区)。
time.gmtime([secs]) 可以将timestamp时间戳转化为时间元组(格林威治标准时间所属时区)。
时间元组 转 格式化时间
time.strftime( format [, t] ) 通过函数将时间元组转成格式化的时间字符串,格式由参数format参数决定。
format 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 秒(01 - 61)
- %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
- %w 一个星期中的第几天(0 - 6,0是星期天)
- %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
- %x 本地相应日期
- %X 本地相应时间
- %y 去掉世纪的年份(00 - 99)
- %Y 完整的年份
- %Z 时区的名字(如果不存在为空字符)
- %% ‘%’字符
格式化时间 转 时间元组
time.strptime(string,format) 将格式字符串转化成时间元组。该函数是time.strftime()函数的逆操作。time.strptime() 函数根据指定的格式把一个时间字符串解析为时间元组,所以函数返回的是时间元组对象。
时间元组 转 时间戳
time.mktime(t):将一个struct_time转化为时间戳 ,time.mktime() 函数执行与gmtime()、localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。
时间元组 转 固定的格式化时间
time.asctime([t]) 生成固定格式的时间表示格式。
时间戳 转 固定的格式化时间
time.ctime([secs]) 生成固定格式的时间表示格式,把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果为指定参数,将会默认使用time.time()作为参数,相当于time.asctime(time.localtime(secs)) 。