总结:几个时间格式就是从下面这个方式进行转换
时间戳 → gmtime()、localtime() → 时间元组 → strftime() → 其他格式
时间戳 ← mktime() ← 时间元组 ← strptime() ← 其他格式

先解释两个名词:时间戳、时间元组

1、时间戳,timestamp

例如 1459996086.7115328 这样的一大串数字,时间戳单位最适于做日期运算。

2、时间元组,struct_time元组

例如 time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=28, tm_sec=49, tm_wday=3, tm_yday=98, tm_isdst=0),用一个元组装起来的 9组 数字处理时间,下面解释一下这9个位置的含义:

pythonTimestamp返回时分秒 timestamp python_时间戳


下面解释几个格式转换函数的用法:

strptime()

描述:函数根据指定的格式把一个时间字符串解析为时间元组。
语法:time.strptime(string[, format])
参数:string – 时间字符串。format – 格式化字符串。
返回值:struct_time对象。
说明
python中时间日期格式化符号:
%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),星期天为 0,星期一为 1,以此类推。
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
实例
import time
print(time.strptime(“30 Nov 00”, “%d %b %y”)) # time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

strftime()

描述:函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
语法:time.strftime(format[, t])
参数:format – 格式字符串。t – 可选的参数t是一个struct_time对象。
返回值:返回以可读字符串表示的当地时间。
python中时间日期格式化符号:
%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 当前时区的名称
%% %号本身
实例
t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
t = time.mktime(t) # 1234861418.0
st = time.gmtime(t) # time.struct_time(tm_year=2009, tm_mon=2, tm_mday=17, tm_hour=9, tm_min=3, tm_sec=38, tm_wday=1, tm_yday=48, tm_isdst=0)
print time.strftime("%b %d %Y %H:%M:%S", st) # Feb 17 2009 09:03:38

mktime(t)

描述:将时间元组变成时间戳
实例:
t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)
t = time.mktime(t) # 1234861418.0

a = “2013-10-10 23:40:00”
st = time.strptime(a, “%Y-%m-%d %H:%M:%S”) # time.struct_time(tm_year=2013, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=3, tm_yday=283, tm_isdst=-1)
s = int(time.mktime(st)) # 1381419600

localtime() 、 gmtime()

描述:输入时间戳,输出时间元组
实例:
print(time.localtime(time.time())) # time.struct_time(tm_year=2020, tm_mon=8, tm_mday=29, tm_hour=13, tm_min=57, tm_sec=42, tm_wday=5, tm_yday=242, tm_isdst=0)
print(time.localtime(1381419600)) # time.struct_time(tm_year=2013, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=3, tm_yday=283, tm_isdst=0)