python中时间表现的格式主要有三种:
a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
b、struct_time时间元组,共有九个元素组。
c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
1.时间格式转换图
2.time 模块
生成时间戳
import time time.time()##纯生成时间错timestamp #>>>1581494610.7103057 time.mktime(time.localtime())#时间元组struct_time 转换为 时间戳timestamp #>>>1581494610.0
生成时间元组
import time # timestamp to struct_time 本地时间 x=time.localtime() #纯生成时间元组struct_time,本地时间 #>>>time.struct_time(tm_year=2020, tm_mon=2, tm_mday=12, tm_hour=16, tm_min=15, tm_sec=14, tm_wday=2, tm_yday=43, tm_isdst=0) print(x.tm_year)##获取时间元组元素 #>>>2020 time.gmtime() ##纯生成时间元组struct_time,格林威治时间 #>>>time.struct_time(tm_year=2020, tm_mon=2, tm_mday=12, tm_hour=8, tm_min=15, tm_sec=14, tm_wday=2, tm_yday=43, tm_isdst=0) time.localtime(time.time())#时间戳timestamp 转换为时间元组 struct_time 本地时间 #>>>time.struct_time(tm_year=2020, tm_mon=2, tm_mday=12, tm_hour=16, tm_min=15, tm_sec=14, tm_wday=2, tm_yday=43, tm_isdst=0) time.gmtime(time.time())#时间戳timestamp 转换为时间元组 struct_time 格林威治时间 #>>>time.struct_time(tm_year=2020, tm_mon=2, tm_mday=12, tm_hour=8, tm_min=15, tm_sec=14, tm_wday=2, tm_yday=43, tm_isdst=0) time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %H:%M:%S')#格式化时间format_time 转换为时间元组 struct_time print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %H:%M:%S')) #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
时间元组结构,9个元素:
属性 值 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
生成格式化时间
import time time.strftime("%Y-%m-%d %X")#纯生成格式化时间 #>>>2020-02-12 16:29:04 time.strftime("%Y-%m-%d %X",time.localtime())#时间元组struct_time 转换为格式化时间 format_time #>>>2020-02-12 16:29:04
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 | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
生成固定格式时间
time.asctime(time.localtime()) #时间元组转换为固定格式时间 #>>>Wed Feb 12 16:33:59 2020 time.ctime(time.time()) ##时间戳转换为固定格式时间 #>>>Wed Feb 12 16:33:59 2020
3.datatime模块
datatime模块重新封装了time模块
dt=datetime.now() print(dt) #>>>2020-02-12 16:48:23.683291 dt2 = dt - timedelta(days=1)#昨天 print(dt2) #>>>2020-02-11 16:48:23.683291 dt3 = dt + timedelta(days=1)#明天 print(dt3) #>>>2020-02-13 16:48:23.683291 dt4 = dt + timedelta(hours=3)##当前时间+3h print(dt4) #>>>2020-02-12 19:48:23.683291 dt5 = dt + timedelta(minutes=5)##当前时间+5mins print(dt5) #>>>2020-02-12 16:53:23.683291