Time
Python时间有三种格式
-
format_time,特定格式的字符串,比如 '2017-03-16 18:22:06'
-
struct_time,是一个类
,可以从该类衍生出其余两种Time对象 -
time_stamp,1970 年 1 月 1 日到现在的秒数
Fucntion
time.strptime()
strptime 应该是 string parse time 的缩写,strptime(format_time, format) -> struct_time。
其中format是 "%Y-%m-%d %H:%M:%S" ,当然需要根据实际需要format的字符串进行更改
time.strftime()
strftime 是 String format time 的缩写,这个方法需要两个参数,其中一个是format,同上。第二个参数可选,默认为 time.localtime() 的返回值,也就是stuct_time。该方法返回format_time,一个特定字符串。
time.mktime()
传入struct.time,返回时间戳
获取当前时间的三种办法
time.time() # 返回当前时间戳,是秒级别的(秒 <- 1000毫秒 <- 1000000微秒)
time.ctime() # 返回当前时间的字符串,格式为‘Thu Mar 24 22:06:03 2022’
time.gmtime() # 获取当前的struct_time
Datetime
Datetime模块用于是date和time模块的合集,一般来说处理问题优先使用该模块,因为功能会更强大。
该模块下常用的有四个类,分别为:
-
datetime.date: 表示日期,常用的属性有year、month和day
-
datetime.time: 表示时间,常用的属性有hour、minute、second和microsecond
-
datetime.datetime: 表示日期时间
-
datetime.timedelta: 表示两个date、time和datetime实例之间的时间间隔,最小单位可达微秒
创建datetime对象的方法
# 使用datetime类直接生成
# 可以看出该类接受一系列数字为初始参数,分别对应年,月,日,小时...
d = datetime.datetime(2020, 3, 18, 20, 15, 20, 300)
# 附加时区属性
d = datetime.datetime(2020, 3, 18, tzinfo=datetime.timezone.utc)
# 根据时间戳返回一个datetime对象
datetime.fromtimestamp(time.time())
时区转化
datetime对象自带一个replace方法,可以实现时区转化
datetime.datetime(2022,10,23).replace(tzinfo=timezone.utc)
时间计算
from dateutil.parser import parse
# a的返回值等同于 datetime.datetime(2017, 10, 1, 12, 12, 12)
a = parse('2017-10-01/12:12:12')
b = parse('2013-3-4/10:10:10')
(a-b).days
(a-b).seconds
也就是说,两个datetime类是可以做差运算的。不仅是datetime类别可以相互运算,datetime也可以与timedelta进行相互运算:
import datetime
a=datetime.datetime.now()+datetime.timedelta(days=1) b=datetime.datetime.now()+datetime.timedelta(days=-1)
不过timedelta的单位支持比较小,最多也只能到days,最小可以达到microseconds等级别。实际运用中不需要这么小的单位,此时可以使用dateutil.relativedelta
模块
import datetime
from dateutil.relativedelta import relativedelta
d = datetime.datetime.now()
print(d) # 2020-04-24 23:24:31.010775
print((d - relativedelta(years=1)).strftime('%Y%m%d')) # 20210424
附录
格式化符号
-
%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 当前时区的名称
[文章导入自 http://qzq-go.notion.site/37f29907540a42b1b129829d6a8895fa 访问原文获取高清图片]