Python time模块详解

time 该模块主要包括提供日期和时间功能的各种类别和函数。该模块不仅提供了将日期和时间格式化为字符串的功能,还提供了从字符串恢复日期和时间的功能。
在 Python 先导入交互式解释器 time 然后输入模块 [e for e in dir(time) if not e.startswith('_')] 命令可以看到模块中包含的所有属性和函数:
>>>[eforeindir(time)ifnote.startswith('_')]
['altzone','asctime','clock','ctime','daylight','get_clock_info','gmtime','localtime','mktime',
'monotonic',
'perf_counter','process_time','sleep','strftime','strptime','struct_time','time','timezone','tzname']在 time 在模块中提供了一个 time.struct_time 类,代表一个时间对象,主要包括 9 每个属性的信息如下表所示:
比如,Python 可以用 time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0) 清楚地代表时间。
此外,Python 还可以使用一个包含 9 一个元素元组代表时间,元组 9 个元素和 struct_time 对象中 9 一个属性的含义是一一对应的。例如,可以使用程序(2018年, 5, 2, 8, 0, 30, 3, 1, 0)代表时间。
常用于日期和时间模块的功能函数如下:
time.asctime([t]):时间元组或 struct_time 将其转换为时间字符串。若未指定参数 t,默认转换当前时间。
time.ctime([secs]):将以秒数代表的时间转换为时间宇符串。
time.gmtime([secs]):将以秒数为代表的时间转换为 struct_time 对象。如果不引入参数,则使用当前时间。
time.localtime([secs]):以秒为代表的时间转换代表当前时间 struct_time 对象。如果不引入参数,则使用当前时间。
time.mktime(t):它是 localtime 反转函数,用于将 struct_time 从对象或元组代表的时间转换为 1970 年 1 月 1 日 0 点整到现在已经过去了多少秒。
time.perf_counter():返回性能计数器的值。以秒为单位。
time.process_time():返回当前工艺使用 CPU 时间。以秒为单位。
time.sleep(secs):暂停 secs 秒,什么都不做。
time.strftime(format[, t]):时间元组或 struct_time 对象格式化为指定格式的时间字符串。如果没有指定参数 t,默认转换当前时间。
time.strptime(string[, format]):将字符串格式的时间分析为 struct_time 对象。
time.time():返回从 1970 年 1 月 1 日 0 点整到现在已经过去了多少秒。
time.timezone:以秒为单位返回当地时区的时间偏移。
time.tzname:返回当地时区的名称。
以下程序已演示 time 棋块的功能函数:
importtime
#将当前时间转换为时间字符串
print(time.asctime())
#将指定时间转换为时间字符串,不设置时间元组后面的三个元素。
print(time.asctime(2018、2、4、11、8、23、0、0):08:232018
#将以秒数为代表的时间转换为时间字符串
print(time.ctime(30)#ThuJan108:00:301970
#将以秒数为代表的时间转换为struct_time对象。
print(time.gmtime(30))
#将当前时间转换为struct_time对象。
print(time.gmtime())
#struct_time对象将以秒数为代表的时间转换为代表当前时间
print(time.localtime(30))
#将元组格式的时间转换为秒代表的时间
print(time.mktime(2018,2,4,11,8,23,0,00)))#1517713703.0
#返回性能计数器的值
print(time.perf_counter())
#使用CPU返回当前进程的时间
print(time.process_time())
#time.sleep(10)
#将当前时间转换为指定格式的字符串
print(time.strftime('%Y-%m-%d%H:%M:%S'))
st='2018年3月20日'
#将指定时间字符串恢复到struct_time对象。
print(time.strptime(st,'%Y年%m月%d日'))
#从1970年1970年1月1日0点到现在已经过去了多少秒。
print(time.strptime(st,'%Y年%m月%d日'))
#从1970年1970年1月1日0点到现在已经过去了多少秒。
print(time.time())
#返回当地时区的时间偏移以秒为单位
print(time.timezone)#国内东八区输出-288在操作上述程序时,可以看到以下输出结果:
FriFeb2111:28:392019 MonFeb411:08:232018 ThuJan108:00:301970 time.struct_time(tm_year=1970,tm_mon=1,tm_mday=1,tm_hour=0,tm_min=0,tm_sec=30,tm_wday=3,tm_yday=1, tm_isdst=0) time.struct_time(tm_year=2019,tm_mon=2,tm_mday=22,tm_hour=3,tm_min=28,tm_sec=39,tm_wday=4,tm_yday=53, tm_isdst=0) time.struct_time(tm_year=1970,tm_mon=1,tm_mday=1,tm_hour=8,tm_min=0,tm_sec=30,tm_wday=3,tm_yday=1, tm_isdst=0) 1517713703.0 0.0 0.140625 2019-02-2211:28:39 time.struct_time(tm_year=2018,tm_mon=3,tm_mday=20,tm_hour=0,tm_min=0,tm_sec=0,tm_wday=1,tm_yday=79, tm_isdst=-1) 1550806119.4960592 -28800
time 模块中的 strftime() 和 strptime() 这两个函数是相互逆转的函数,其中 strftime() 用于将 struct_time 对象或时间元组转换为时间字符串; strptime() 将时间字符串转换为函数 struct_time 对象。这两个函数都涉及到编写格式模板,例如在上述程序中使用 %Y 代表年、%m 代表月、%d 代表日、%H 代表时、%M 代表分、%S 代表秒。这两个函数所需的时间格式字符串支持指令如下表所示:
指
令
含义
代表一年中的第几周,以星期天为每周的第一天,范围为00~53。这样,一年中的第一个星期天被认为是第一周
。当使用 strptime() 函数分析时间字符串时,只有同时指定周几和年份才能有效
%w代表星期几的值,范围:0~6,其中 0 代表周日%W代表一年小的第几周,以周一为每周的第一天,范围为00~53。这样,一年中的第一个星期一就被认为是第一个星期
。当使用 strptime() 函数分析时间字符串时,只有同时指定周几和年份才能有效
%x本地化日期的表示形式%X本地化时间的表现形式%y年缩写,范围:00~99,比如 2018 年就简写成 18%Y年份的完整形式。例如 2018%z显示时区偏移%Z时区名(如果时区不在,则显示为空)%%用于代表%符号