- 时间的三种格式
- time模块中的其他函数
- 时间三种格式之间的转化
-
一,时间的三种模块
在python中对于时间的描述存在三种格式:1,时间戳,2,时间结构体 3,按某种格式形式展示的字符串
1,时间戳
import time
print(time.time())
1698237679.3519173
2,时间结构化
# ocaltime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,
# tm_sec,tm_wday,tm_yday,tm_isdst)import timeres = time.localtime(time.time())print(res)
time.struct_time(tm_year=2023, tm_mon=10, tm_mday=25, tm_hour=20, tm_min=44, tm_sec=0, tm_wday=2, tm_yday=298, tm_isdst=0)
相应的解释:
tm_yeat --->> 年
tm_mon --->> 月
tm_mday --->> 日
tm_hour --->> 时
tm_min --->> 分
tm_sec --->> 秒
tm_wday --->> 一周的第几天 ,外国人星期一是第0天,所以这里表示的是星期三
tm_yday --->> 一年中的第几天
tm_isdst --->> 是否是夏令时(可能是跟二战时的有关,但是不重要)
3,按某种格式的字符串格式的时间(普遍用到的,给人以清晰感)
# def strftime(format: str, t: _TimeTuple | struct_time = ...) -> str: ...
# 从解释上看,传入的参数需要为格式formatprint(time.strftime('%Y-%m-%d %H:%M:%S %p'))
2023-10-25 20:54:15 PM
格式讲解:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
二,time模块中的其他函数
mktime()函数,通过下面的解释可以看出,mktime函数需要传的参数为结构化的时间,然后返回的是一个浮点数。也就是一个时间戳。
def mktime(t: _TimeTuple | struct_time) -> float: ...
localtime()函数,通过下面的解释可以看出,localtime函数需要传入的参数为秒,也就是一个时间戳,然后返回的是一个结构化时间。localtime函数返回的结构化时间显示的是当地时间,也就是东八区时间。
def localtime(secs: float | None = ...) -> struct_time: ...
gmtime()函数,通过下面的解释可以看出,gmtime函数需要传入的参数为秒,也就是一个时间戳,然后返回的是一个结构化时间。但是gmtime函数返回的结构化时间显示的国际标准时间。
def gmtime(secs: float | None = ...) -> struct_time: ...
asctime()函数,传入的参数为一个结构化时间,然后返回的是一个字符串格式的时间。
当没有参数传递的时候,会将我们所在的东八区的时间传入当作参数。
def asctime(t: _TimeTuple | struct_time = ...) -> str: ...
strptime()函数,传递一个字符串格式的时间,然后返回一个结构化时间。
def strptime(string: str, format: str = ...) -> struct_time: ...
三,时间三种格式之间的转化
上图讲解,三种时间格式之间的转化就很明晰了。那么上代码看结构。
import timeformat_time = time.strftime('%Y-%m-%d %H:%M:%S') # 打印字符串格式时间
print(format_time)
ret = time.strptime(format_time,'%Y-%m-%d %H:%M:%S') # 将字符串格式时间转化为结构化时间格式res = time.mktime(ret) + 7*86400 # 打印7天后的时间ret = time.strftime('%Y-%m-%d %H:%M:%S',(time.localtime(res)))
print(ret)
2023-10-25 21:24:01
time.struct_time(tm_year=2023, tm_mon=10, tm_mday=25, tm_hour=21, tm_min=24, tm_sec=1, tm_wday=2, tm_yday=298, tm_isdst=-1)
2023-11-01 21:24:01
请按任意键继续. . .
完成时间三种格式之间的转化。
这张图显示的是asctime()函数和ctime()函数怎么用的。