预热代码片段:获取某个时间的 5秒以前的时间
# 注意:'%Y-%m-%d %X'
效果等同 '%Y-%m-%d %H:%M:%S'
,输出格式如:2020-09-21 14:33:28
import time t1 = '2020-09-21 14:33:28' utc = time.mktime(time.strptime(t1, '%Y-%m-%d %X')) - 5 t2 = time.strftime('%Y-%m-%d %X', time.localtime(utc)) print(utc) print(t1) print(t2)
输出:
1600670003.0 2020-09-21 14:33:28 2020-09-21 14:33:23
一、time模块
time模块中时间表现的格式主要有三种:
- timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量;
- struct_time:时间元组,共有九个元素组;
- format time:格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式;
1、时间格式转换图:
2、主要time生成方法 和 time格式转换方法实例:
(1) 生成timestamp
import time t1 = time.time() # struct_time to timestamp t2 = time.mktime(time.localtime()) print(t1) print(t2)
输出:
1600590265.6893358 1600590265.0
(2) 生成struct_time
示例1:
# timestamp to struct_time 本地时间 t1 = time.localtime() t2 = time.localtime(time.time()) print(t1) print(t2)
输出:
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=16, tm_min=27, tm_sec=8, tm_wday=6, tm_yday=264, tm_isdst=0) time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=16, tm_min=27, tm_sec=8, tm_wday=6, tm_yday=264, tm_isdst=0)
示例2:
# timestamp to struct_time 格林威治时间 t1 = time.gmtime() t2 = time.gmtime(time.time()) print(t1) print(t2)
输出:
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=8, tm_min=28, tm_sec=17, tm_wday=6, tm_yday=264, tm_isdst=0) time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=8, tm_min=28, tm_sec=17, tm_wday=6, tm_yday=264, tm_isdst=0)
示例3:
# format_time to struct_time t1 = time.strptime('2020-09-20 16:37:06', '%Y-%m-%d %X') print(t1)
输出:
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=6, tm_yday=264, tm_isdst=-1)
(3) 生成format_time
# struct_time to format_time t1 = time.strftime("%Y-%m-%d %X") # 注意:"%Y-%m-%d %X" 等同 "%Y-%m-%d %H:%M:%S" t2 = time.strftime("%Y-%m-%d %X", time.localtime()) print(t1) print(t2)
输出:
2020-09-20 16:34:32 2020-09-20 16:34:32
(4) 生成固定格式的时间表示格式
t1 = time.asctime(time.localtime()) t2 = time.ctime(time.time()) print(t1) print(t2)
输出:
Sun Sep 20 16:36:18 2020 Sun Sep 20 16:36:18 2020
struct_time元组元素结构
属性 值
tm_year(年) 比如2011
tm_mon(月) 1 - 12
tm_mday(日) 1 - 31
tm_hour(时) 0 - 23
tm_min(分) 0 - 59
tm_sec(秒) 0 - 61
tm_wday(weekday) 0 - 6(0表示周日)
tm_yday(一年中的第几天) 1 - 366
tm_isdst(是否是夏令时) 默认为-1
format time结构化表示
格式 | 含义 |
---|---|
%a | 本地(locale)简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 一个月中的第几天(01 - 31) |
%H | 一天中的第几个小时(24小时制,00 - 23) |
%I | 第几个小时(12小时制,01 - 12) |
%j | 一年中的第几天(001 - 366) |
%m | 月份(01 - 12) |
%M | 分钟数(00 - 59) |
%p | 本地am或者pm的相应符 |
%S | 秒(01 - 61) |
%U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 |
%w | 一个星期中的第几天(0 - 6,0是星期天) |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
常见结构化时间组合:
print(time.strftime("%Y-%m-%d %X"))
输出:
2020-09-20 17:09:02
3、time加减
# timestamp加减,以秒为单位 t1 = time.time() t2 = t1 + 10 print(time.ctime(t1)) print(time.ctime(t2))
输出:
Sun Sep 20 17:07:38 2020 Sun Sep 20 17:07:48 2020
二、datetime模块
datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。
1、date类
datetime.date(year, month, day)
静态方法和字段
- date.max、date.min:date对象所能表示的最大、最小日期;
- date.resolution:date对象表示日期的最小单位。这里是天;
- date.today():返回一个表示当前本地日期的date对象;
- date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
(待续)