Python time模块

本文介绍Python的time模块,是python常用的处理日期和时间的模块。
笔者也介绍了和time模块相关的calendar模块datetime模块

一、时间表示

常用的时间表示方法有以下三种:

  • 时间戳(timestamp):通常来说,时间戳表示从1970年1月1日00:00:00开始按秒计算的偏移量,它的值是float类型,单位为秒;
  • 格式化时间字符串(Format Time String):例如 “2016-03-20 11:45:39”;
  • 结构化时间(struct_time),又称为时间元组(tupletime):struct_time是time模块定义的一个python类,有九个属性,如下表:
属性名字段意义
tm_year年(四位数)2020
tm_mon1到12
tm_mday1到31
tm_hour0到23
tm_min0到59
tm_sec0到61(60或61是闰秒)
tm_wday一周的第几日0到6(0是周一)
tm_yday一年的第几日1到366(儒略历)
tm_isdst夏令时是否是夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认-1

二、time模块

下面介绍如何使用time模块获取时间,以及三种不同的时间表示方法间的相互转换。

1. 获取timestamp

time.time()函数用于获取当前时间戳,如下例:

import time
timestamp = time.time()
print("当前时间戳:", timestamp)

输出为:

当前时间戳: 1611106259.0899193

2. 将timestamp转换为struct_time

time.localtime([secs])函数用于将时间戳转换为struct_time,如果不传入形参,默认返回当前时间的struct_time,如下例:

import time
print("获取已有时间戳的struct_time:", time.localtime(1511106259.0899193))
print("获取当前时间的struct_time:", time.localtime(time.time()))
print("获取当前时间的struct_time:", time.localtime())

输出为:

获取已有时间戳的struct_time: time.struct_time(tm_year=2017, tm_mon=11, tm_mday=19, tm_hour=23, tm_min=44, tm_sec=19, tm_wday=6, tm_yday=323, tm_isdst=0)
获取当前时间的struct_time: time.struct_time(tm_year=2021, tm_mon=1, tm_mday=20, tm_hour=9, tm_min=40, tm_sec=24, tm_wday=2, tm_yday=20, tm_isdst=0)
获取当前时间的struct_time: time.struct_time(tm_year=2021, tm_mon=1, tm_mday=20, tm_hour=9, tm_min=40, tm_sec=24, tm_wday=2, tm_yday=20, tm_isdst=0)

3. 将struct_time转换为timestamp

time.mktime(tupletime)函数用于将struct_time转换为timestamp,如下例:

import time
print(time.mktime(time.localtime()))

输出为:

1611109082.0

4. 将struct_time转换为Format Time String

4.1 简单转换

time.asctime([tupletime])是一个简单的将struct_time转换为Format Time String的函数,如下例:

import time
print(time.asctime(time.localtime()))
print(time.asctime())

输出为:

Wed Jan 20 10:45:10 2021
Wed Jan 20 10:45:10 2021

但我们无法控制返回的Format Time String的格式。

4.2 转换为自定义的时间字符串

time.strftime(fmt[, tupletime])函数用于将struct_time转换为自定义的Format Time String,参数tupletime缺省时默认为当前时间,如下例:

import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
print(time.strftime("%Y-%m-%d %H:%M:%S"))
print(time.strftime("%a %b %d %H:%M:%S", time.localtime()))
print(time.strftime("%c"))

输出为:

2021-01-20 10:08:03
2021-01-20 10:08:03
Wed Jan 20 10:08:03
Wed Jan 20 10:08:03 2021

python中时间日期格式化符号如下:

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(0000-9999)
  • %m 月份的数字表示(01-12)
  • %d 月内的一天(01-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(0-12)(大写’i’,不是小写‘L’)
  • %M 分钟数(00-59)
  • %S 秒数(00-59)
  • %f 微秒 (000000-999999)
  • %a 本地简化星期名称(Mon, Tue, Wed, Thu, Fri, Sat, Sun)
  • %A 本地完整星期名称(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
  • %b 本地简化月份名称(Jan, Feb, Mar, Apr, May, Jun, July, Aug, Sep, Oct, Nov, Dec)
  • %B 本地完整月份名称(January, February, April, May, June, July, Augest, September, October, November, December)
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年内的星期数(00-53),星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始,注意struct_time.tm_wday是星期一为星期的开始
  • %W 一年中的星期数(00-53),星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

5. 将Format Time String转换为struct_time

time.strptime(str, fmt='%a %b %d %H:%M:%S %Y')根据参数fmt将时间字符串str转换为struct_time,如下例:

import time
FTS0 = time.strftime("%Y-%m-%d %H:%M:%S")
FTS1 = time.strftime("%a %b %d %H:%M:%S %Y")
print(time.strptime(FTS0, "%Y-%m-%d %H:%M:%S"))
print(time.strptime(FTS1)) # time.strptime的fmt参数按默认值

输出为:

time.struct_time(tm_year=2021, tm_mon=1, tm_mday=20, tm_hour=10, tm_min=36, tm_sec=12, tm_wday=2, tm_yday=20, tm_isdst=-1)
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=20, tm_hour=10, tm_min=36, tm_sec=12, tm_wday=2, tm_yday=20, tm_isdst=-1)

6. 将timestamp转换为Format Time String

time.ctime([secs])用于将时间戳转换为Format Time String,相当于time.asctime(time.localtime(secs)),参数缺省时相当于time.asctime(),如下例:

import time
print(time.ctime(1511106259.0899193))
print(time.asctime(time.localtime(1511106259.0899193)))
print(time.ctime())
print(time.asctime())

输出为:

Sun Nov 19 23:44:19 2017
Sun Nov 19 23:44:19 2017
Wed Jan 20 10:50:37 2021
Wed Jan 20 10:50:37 2021

7. time模块的其他常用函数

函数描述
time.perf_counter()返回系统运行时间,由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。
time.process_time()返回进程运行时间,由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。
time.sleep(secs)推迟调用线程的运行,secs单位为秒。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值