【python】time模块和datetime模块详解

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

 

 

猜你喜欢

转载自www.cnblogs.com/paulwinflo/p/12299548.html