Python中时间处理
一、在Python中,与时间处理有关的模块包括:time,datetime以及calendar。通常有这几种方式来表示时间:时间戳、格式化的时间字符串 、元组(struct_time)
1、UTC:世界标准时间,在中国为UTC+8。
2、DST(Daylight Saving Time):即夏令时。
3、时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
4、元组(struct_time):struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
二、time模块
常用函数:
1、time.localtime():将一个时间戳转换为当前时区的struct_time
2、time.time():返回当前时间的时间戳
3、time.sleep(secs):线程推迟指定的时间运行。单位为秒。
4、time.strftime(format[, t]): 把一个代表时间的元组或者struct_time转化为格式化的时间字符串(精确到秒)
format -- 格式字符串,如果t未指定,将传入time.localtime()
eg:time.strftime("%Y-%m-%d %X", time.localtime())
'2011-05-05 16:37:06'
格式
|
含义
|
%a
|
本地(locale)简化星期名称
|
%b
|
本地简化月份名称
|
%c
|
本地相应的日期和时间表示
|
%m
|
月份(01 - 12)
|
%Y
|
完整的年份
|
%d
|
一个月中的第几天(01 - 31)
|
%x
|
本地相应日期
|
%X
|
本地相应时间(精确到秒)16:37:06
|
%H
|
小时数
|
%M
|
分钟数(00 - 59)
|
%p
|
本地am或者pm的相应符
|
%S
|
秒(01 - 61)
|
%U
|
一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
|
%w
|
一个星期中的第几天(0 - 6,0是星期天)
|
%%
|
‘%’字符
|
5、time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式(精确到秒):
'Sun Jun 20 23:21:05 1993',如果没有参数,将会将time.localtime()作为参数传入。
eg:time.asctime()
'Thu May 5 14:55:43 2022'
6、time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
eg:time.ctime()
'Thu May 5 14:55:09 2022'
三、datetime模块
datetime主要包含以下几个内容
- date:日期类
- time:时间类
- datetime:是date和time的结合体,包括date与time的所有信息,date和time类中具有的方法和属性,datetime类都具有(精确到毫秒),所以在我们日常的工作中,可以仅使用datetime类microsecond[,tzinfo]]]]])
- timedelta:时间间隔(精确到毫秒)
1、日期对象 date:常用的属性有year, month, day
方法:
(1)a = datetime.day.today():返回当前日期:
(2)b = a.replace(year,month,day):替换日期:返回一个替换指定日期字段的新date对象。参数3个可选参数,替换是产生新对象,不影响原date对象
(3)a.strftime("%Y-%m-%d"):将日期对象转化为格式化字符串对象
(4)a.__str__():直接获得日期的字符串:a.__str__()
(5)a.ctime():获得ctime样式的格式
a = datetime.date.today()
print(type(a)) #<class 'datetime.date'>
print(a.strftime("%Y-%m-%d")) #str
print(a.__str__()) #str
print(a.ctime()) #Thu Aug 11 00:00:00 2022
print(a.year) #属性
print(a.month) #属性
print(a.day) #属性
(6)比较大小:
x.__eq__(y):等于(x==y)
x.__ge__(y):大于(x<y)
x.__lt__(y):小于(x<y)
x.__sub__(y):x和y相差多少天
2、时间对象 time:常用属性有hour, minute, second, microsecond
3、日期时间对象 datetime:常用属性有:有year,month,day,hour, minute, second, microsecond
方法:
(1)a=datetime.datetime.today(): 返回一个当前本地时间的datetime.datetime类的对象。
(2)datetime.datetime.now([tz]) :不指定时区,返回一个当前本地时间的datetime.datetime类的对象。指定时区,返回指定时区的时间
(3)datetime.datetime.strptime(strptime("时间字符串",format) :将时间字符串转换为datetime对象
(4)a.strftime("%Y-%m-%d"):将日期对象转化为格式化字符串对象
(5)datetime.datetime(*list):list转换为datetime.datetime
a = datetime.datetime.now()
print(type(a)) #<class 'datetime.datetime'>
print(a.strftime("%m/%d/%Y %H:%M:%S %p")) #08/11/2022 19:20:31 PM
datetime_list = [2022, 7, 10, 9, 40, 47]
print(datetime.datetime(*datetime_list)) #2022-07-10 09:40:47
4、时间间隔 timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0):
也可以用于Python中的日期操作。这是执行日期操作的最简单方法之一
eg:加一天
dtime = datetime.date.today() + datetime.timedelta(days=1)