Python-时间模块time、datetime介绍
一、Python时间
在Python中,通常有以下几种方法来表示时间:
1、时间戳-timestamp
时间戳表示的是,从1970年1月1日00:00:00开始按秒计算的偏移量,返回的是float类型的时间,比如:
1584070028.777221。
2、格式化的时间字符串
格式化的时间字符串,比如:“2022-3-13 11:30”
3、元组形式的时间(stuct_time)
元组时间有9个元素,分别是:
tm_year 年: 2022
tm_mon 月:1~12
tm_mday 日:1~31
tm_hour 时:0~23
tm_min 分: 0~59
tm_sec 秒: 0~61
tm_wday 周 :0~6
tm_yday 一年中第几天:0~366
tm_isdst 是否是夏令时 默认-1,生效设置为1,不生效设置为0
比如time.stuct_time(tm_year=2020, tm_mon=3, tm_mday=13, tm_hour=11, tm_min=40, tm_sec=30, tm_wday=5, tm_yday=100, tm_isdst=0)
4、UTC时间
世界协调时间(coordinated universal time),即格林威治天文时间,世界标准时间,我国属于UTC+8, 又称东8区。
二、time模块方法
1、time.time()
返回当前时间的时间戳
import time
time.time()
# >> 1648793136.478446
2、time.localtime([secs])
将一个时间戳转换为当前时区的stuct_time,若secs参数未提供,则以当前时间为准。
import time
time.localtime()
# >> time.struct_time(tm_year=2022, tm_mon=4, tm_mday=1, tm_hour=14, tm_min=7, tm_sec=15, tm_wday=4, tm_yday=91, tm_isdst=0)
time.localtime(123443.23)
# >> time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=18, tm_min=17, tm_sec=23, tm_wday=4, tm_yday=2, tm_isdst=0)
3、time.gmtime([secs])
和localtime()方法类似,gmtime()是将一个时间戳转为为utc(0时区)的sutct_time。
time.gmtime()
# >> time.struct_time(tm_year=2022, tm_mon=4, tm_mday=1, tm_hour=6, tm_min=13, tm_sec=45, tm_wday=4, tm_yday=91, tm_isdst=0)
4、time.mktime(t)
将一个struct_time转换为时间戳,它是time.localtime()的反操作。
time.mktime(time.struct_time((2020, 3, 13, 12, 22, 29, 4, 73, 0)))
# >> 1584073349.0
5、time.sleep(secs)
将线程推迟指定的时间运行,单位为秒
6、timeasctime([t])
把表示时间的元组或者stuct_time表示成以下形式:Fri Mar 3 12:43:46 2020,如果没有参数将会以time.localtime()作为参数传入。
time.asctime(time.struct_time((2020, 3, 3, 12, 43, 46, 4, 73, 0)))
# >> 'Fri Mar 3 12:43:46 2020'
7、time.ctime([secs])
把一个时间戳转化为asctime()的形式。如果参数为给定,默认以time.time()为参数。相当于time.asctime(time.localtime(secs))。
time.ctime()
# >> 'Fri Apr 1 14:22:55 2022'
8、time.strftime(format[,t])
把一个代表时间的元组或者stuct_time(比如由time.localtime()和time,gmtime()返回的)转化为格式化的时间字符串,如果t未指定,将默认传入time.localtime()。
字符串转时间格式对应表:
%a ——> 星期的缩写
%A ——> 完整的星期的名称
%b ——> 月份的缩写
%B ——> 完整的月份名称
%c ——> “Fri Mar 13 19:42:30 2020"格式
%d ——> 十进制数格式的日期[01-31]
%H ——> 小时(24小时制) 十进制数[00, 23]
%I ——> 小时(12小时制)十进制数[01-12]
%j ——> 一年中的一天(十进制)[ 001-366]
%m ——> 月份(十进制)[01-12]
%M ——> 分钟数(十进制数)[00-59]
%p ——> AM 或 PM
%S ——> 秒数[00-59]
%U ——> 一年中的周数(星期日作为一周的第一天)十进制数[0-53]
%w ——> 星期数(十进制)[0-6]
%W ——> 一年中的周数(星期一作为一周的第一天)十进制数[0-53]
%x ——> 日期表示(月/日/不带实际的年份)比如:"03/13/20"
%X ——> 时间表示(时:分:秒)比如:”19:52:34“
%y ——> 不带实际的年份(十进制数)[0-99]
%Y ——> 待时机的年份(十进制数)
%z ——> 时区偏移指示与格式+ HHMM或-HHMM形式的UTC / GMT的正或负时差,其中H表示十进制小时数字,M表示小数分钟数字[-23:59,+ 23:59]。
%Z ——> 时区名称,例如”中国标准时间“
%% ——> ”%“字符
time.strftime("%Y-%m-%d %X %A")
# >> '2022-04-01 14:24:05 Friday'
三、datetime模块
相比time模块,datetime模块更加直观、更容易调用。
datetime模块有以下几个类:
1) datetime.date : 表示日期类型。常用的属性由year, month, day;
2) datetime.time: 表示时间的类。常用的属性有 hour,minute, second, microsecond;
3) datetime.datetime: 表示日期时间;
4) datetime.timedelta: 表示时间间隔,即两个施加点之间的长度;
5) datetime.tzinfo: 与时区有关的信息;
1、datetime.datetime.now()
返回当前的日期类型,d = datetime.dateime.now(),通过d.timestamp(), d.today(), d.time(), d.timetuple()等方法调用。
import datetime
datetime.datetime.now()
# >> datetime.datetime(2022, 4, 1, 14, 29, 3, 960686)
2、datetime.date.frotimestamp()
把一个时间戳转化为datetime时间类型。
datetime.date.fromtimestamp(3245466545.34545)
# >> datetime.date(2072, 11, 4)
3、时间运算 datetime.timedelta()
d = datetime.datetime.now()
print(d)
# >> 2022-04-01 14:36:24.264947
d1 = d + datetime.timedelta(5) # 当前时间加上5天
print(d1)
# >> 2022-04-06 14:36:24.264947
d2 = d + datetime.timedelta(hours=5)
print(d2)