【python日期和时间处理】time模块基本使用
1. time模块中三种时间格式
- 时间戳
time模块获取各种精度的时间戳
import time
timestamp = time.time()
timestamp_s = int(time.time()) # s精度
timestamp_ms = int(time.time() * 1000) # ms精度
timestamp_us = int(time.time() * 1000_000) # μs精度
timestamp_ns = time.time_ns() # ns精度
print(timestamp)
print(timestamp_s)
print(timestamp_ms)
print(timestamp_us)
print(timestamp_ns)
执行结果:
1672829205.6756904 # s
1672829205 # s
1672829205675 # ms
1672829205675690 # μs
1672829205675690400 # ns
-
格式化时间字符串
如"2023-01-03 17:18:00" -
时间元组
# 获取当前时间元组的两种方式
time.localtime()
Out[21]: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=42, tm_sec=48, tm_wday=2, tm_yday=4, tm_isdst=0)
time.gmtime()
Out[24]: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=4, tm_hour=10, tm_min=43, tm_sec=58, tm_wday=2, tm_yday=4, tm_isdst=0)
2. 三种时间格式相互转化
2.1 时间戳转时间元组及格式化时间字符串
- time.localtime(secs)——将时间戳转换为本地时间
time.localtime(1672824240)
Out[6]: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=4, tm_hour=17, tm_min=24, tm_sec=0, tm_wday=2, tm_yday=4, tm_isdst=0)
- time.gmtime(secs)——将时间戳转换为格林威治时间
time.gmtime(1672824240)
Out[5]: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=4, tm_hour=9, tm_min=24, tm_sec=0, tm_wday=2, tm_yday=4, tm_isdst=0)
- time.ctime(secs)——将时间戳转成格式化时间字符串
time.ctime(1672824240)
Out[4]: 'Wed Jan 4 17:24:00 2023'
注意:
- 北京时间比utc和gmt时间要快8个小时,即北京时间下午17点的时候,对应的是utc和gmt时间的早上9点
- 以上api传入的时间戳必须是秒级精度的时间戳
2.2 时间元组转其他
- time.mktime()——将时间元组转成秒级精度的时间戳
time.mktime(time.localtime())
Out[19]: 1672825929.0
- time.strftime(format, p_tuple)——将时间元组转成格式化时间字符串
p_tuple = time.localtime()
p_tuple
Out[8]: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=17, tm_sec=6, tm_wday=2, tm_yday=4, tm_isdst=0)
time.strftime("%Y-%m-%d %H:%M:%S", p_tuple)
Out[11]: '2023-01-04 18:17:06'
- time.asctime(p_tuple)——将时间元组转成成固定格式的时间字符串(%a %b %d %H %M %S %Y)
p_tuple = time.localtime()
p_tuple
Out[13]: time.struct_time(tm_year=2023, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=25, tm_sec=6, tm_wday=2, tm_yday=4, tm_isdst=0)
time.asctime(p_tuple)
Out[14]: 'Wed Jan 4 18:25:06 2023'
2.3 格式化时间字符串转时间元组(在time模块中,格式化时间字符串只能直接转成时间元组)
- time.strptime(string, format)——将字符串(str)解析(p)成时间元组(time)
time_str = "2022-01-04 18:27:00"
time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
Out[16]: time.struct_time(tm_year=2022, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=27, tm_sec=0, tm_wday=1, tm_yday=4, tm_isdst=-1)