前言
仅供个人学习用,如果对各位朋友有参考价值,给个赞或者收藏吧 ^_^
一、time模块介绍
time
模块是Python中处理时间相关操作的核心工具,提供了时间获取、格式化、转换、延迟以及计时等多种功能。
总的来说time模块中时间可以有3种格式:时间戳,时间元组和时间字符串,其中时间字符串可以自行定制格式。time模块的方法大部分是针对这几种时间格式进行输出,处理和转化。
时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
下面本文对常用的Time方法进行介绍。
二、Time模块的主要功能
1. 时间获取
(1)time.time()
:
返回当前时间的时间戳(自1970年1月1日00:00:00 UTC以来的秒数)。
注意:time.time()的括号内没有参数,下面是代码举例:
import time
timestamp = time.time()
print("当前时间戳:", timestamp)
# 输出:当前时间戳: 1720363892.180193
(2)time.localtime([secs])
:
将时间戳(默认为当前时间)转换为本地时间的struct_time
对象(时间元组格式)。时间元组是另一种表示时间的方式,其格式为(tm_year,tm_mon,tm_mday,tm_hour,tm_min, tm_sec,tm_wday,tm_yday,tm_isdst),下面是每个元素的含义:
tm_year: 年
tm_mon: 月,范围为[1,12]
tm_mday: 一个月的第几天,范围为[1,31]
tm_hour: 小时,范围为[0,23]
tm_min: 分, 范围为[0,59]
tm_sec: 秒,范围为[0,59]
tm_wday: 一周中的第几天,范围是[0,6],周一为0
tm_yday: 一年中的第几天,范围是[1,366]
tm_isdat: 1代表夏令时
demo示例
import time
timestamp = time.time()
print("当前时间戳:", timestamp)
local_time = time.localtime() # 括号内不加参数,表示将当前(北京)时间转换为时间元组。
print("本地时间:\n", local_time)
yesterday_time = time.localtime(timestamp-24*60*60) # 返回当前时间前一天的时间元组
print('当前时间前一天的时间元组:\n', yesterday_time)
year = time.localtime().tm_year # 访问时间元组中的某项,如调用tm_year
print('年份:', year)
output输出
当前时间戳: 1720364587.5937397
本地时间:
time.struct_time(tm_year=2024, tm_mon=7, tm_mday=7, tm_hour=23, tm_min=3, tm_sec=7, tm_wday=6, tm_yday=189, tm_isdst=0)
当前时间前一天的时间元组:
time.struct_time(tm_year=2024, tm_mon=7, tm_mday=6, tm_hour=23, tm_min=3, tm_sec=7, tm_wday=5, tm_yday=188, tm_isdst=0)
年份: 2024
(3)time.gmtime([secs])
:
将时间戳(默认为当前时间)转换为UTC(格林威治)时间的struct_time
对象。也就是说类似于time.localtime(),不过一个是默认北京时间作为输出,一个是根据
格林威治时间输出。
demo
import time
local_time = time.localtime()
print("本地时间:\n", local_time)
local_time1 = time.gmtime()
print("UTC本地时间:\n", local_time1)
output
本地时间:
time.struct_time(tm_year=2024, tm_mon=7, tm_mday=7, tm_hour=23, tm_min=13, tm_sec=15, tm_wday=6, tm_yday=189, tm_isdst=0)
UTC本地时间:
time.struct_time(tm_year=2024, tm_mon=7, tm_mday=7, tm_hour=15, tm_min=13, tm_sec=15, tm_wday=6, tm_yday=189, tm_isdst=0)
2. 时间转换
(1)time.mktime(t)
:
将struct_time
对象(时间元组)转换为时间戳。
注意该方法括号内必须要有时间元组参数。
demo
import time
timestamp = time.time()
print("当前时间戳:", timestamp)
local_time = time.localtime() # 括号内不加参数,表示将当前时间转换为时间元组。
print("本地时间:\n", local_time)
print(type(local_time))
timestamp1 = time.mktime(time.localtime())
print("时间戳:", timestamp1)
output
当前时间戳: 1720365737.5152326
本地时间:
time.struct_time(tm_year=2024, tm_mon=7, tm_mday=7, tm_hour=23, tm_min=22, tm_sec=17, tm_wday=6, tm_yday=189, tm_isdst=0)
<class 'time.struct_time'>
时间戳: 1720365737.0
(2)time.asctime([t])
和 time.ctime([secs])
:
两者都用于将时间戳或struct_time
对象转换为可读的字符串表示,但ctime
直接接受时间戳,而asctime
接受struct_time
对象。
demo
import time
timestamp = time.ctime() # 返回当前时间字符串
print("ctime当前时间:\n", timestamp)
times = time.ctime(time.time()) # 参数为时间戳
print('参数为时间戳的ctime当前时间:\n', times)
timestamp1 = time.asctime() # 返回当前时间字符串
print("asctime当前时间:\n", timestamp1)
times1 = time.asctime(time.localtime()) # 参数为时间元组
print('参数为时间元组的asctime当前时间:\n', times1)
times2 = time.asctime((1, 1, 1, 1, 1, 1, 1, 1, 1)) # 给定元组,返回时间字符串
print('asctime的参数给定元组,返回时间字符串:\n', times2)
output
ctime当前时间:
Sun Jul 7 23:41:57 2024
参数为时间戳的ctime当前时间:
Sun Jul 7 23:41:57 2024
asctime当前时间:
Sun Jul 7 23:41:57 2024
参数为时间元组的asctime当前时间:
Sun Jul 7 23:41:57 2024
asctime的参数给定元组,返回时间字符串:
Tue Jan 1 01:01:01 1
3. 时间格式化
(1)time.strftime(format[, t])
:
将指定的struct_time
对象(默认为当前时间)按照给定的格式字符串format
转换成字符串。常用的格式化字符包括%Y
(四位数的年份)、%m
(月份)、%d
(日)、%H
(小时,24小时制)、%M
(分钟)、%S
(秒)等。
demo
import time
# time.strftime(format[, t]) 下面formatted_time是返回当前日期和时间的字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("格式化时间:", formatted_time)
# time.strptime(string[, format]):将时间字符串解析为struct_time对象。
specific_time = time.strptime("2023-04-01 12:00:00", "%Y-%m-%d %H:%M:%S")
print(specific_time)
# 使用指定的struct_time对象
formatted_specific_time = time.strftime("%A, %B %d %Y", specific_time)
print("特定格式化时间:", formatted_specific_time)
output
格式化时间: 2024-07-08 00:00:07
time.struct_time(tm_year=2023, tm_mon=4, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=91, tm_isdst=-1)
特定格式化时间: Saturday, April 01 2023
(2)time.strptime(string[, format])
:
将符合指定格式format
的时间字符串string
转换为struct_time
对象。或者说字符串时间按照一定时间格式解析为时间元组。
已在上面的(1)strftime
示例中展示。
4. 时间延迟
(1) time.sleep(secs)
:使程序暂停执行指定的秒数。
demo
import time
print("开始等待...")
time.sleep(3)
print("等待结束")