time和datetime的常用方法
1.time模块
time模块以下时间表示方法。
- 第1种是:时间戳的方式。是基于1970年1月1日0时0分0秒的偏移。浮点数。
- 第2种是:struct_time()类型的表示方法。gmtime()和localtime()可以将时间戳显示为struct_time()类型。
- 第3种是:格式化时间。其中strftime()函数可以把struct_time()时间格式化显示。
1.1.time模块的三类函数
1、时间获取:time()ctime()gmtime()
- time.time() 获取当前时间,浮点数
import time print(time.time()) # 1607849520.680959
- time.ctime()获取当前时间并以易读方式表示,返回字符串
import time print(time.ctime()) # Sun Dec 13 16:52:34 2020
- time.gmtime()表示为计算机可处理的格式
import time print(time.gmtime()) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=13, tm_hour=8, tm_min=53, tm_sec=20, tm_wday=6, tm_yday=348, tm_isdst=0)
2、时间格式化:strftime() strptime()
- time.strftime(format[,t]): 根据参数转换一个sturc_time或元组为字符串。
import time print(time.strftime("%Y-%m-%d", time.localtime())) # 2020-12-13
- time.strptime(string[, format]): 与strftime相反,返回一个struct_time。
import time print(time.strptime("2020-12-13 16:56:22", "%Y-%m-%d %X")) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=13, tm_hour=16, tm_min=56, tm_sec=22, tm_wday=6, tm_yday=348, tm_isdst=-1)
2.datetime模块
datetime是python当中比较常用的时间模块,主要是输出格式化和操作提供高效的属性提取功能。
datetime.date | 表示日期,常用的属性有:year, month和day |
datetime.time | 表示时间,常用属性有:hour, minute, second, microsecond |
datetime.datetime | 表示日期时间 |
datetime.timedelta | 表示两个date、time、datetime实例之间的时间间隔,分辨率(最小单位)可达到微秒 |
1、datetime.datetime
- datetime.datetime.now():返回系统当前时间(2020-07-16 18:39:55.921602)
- datetime.datetime.now().date():返回当前时间的日期(2020-07-16)
- datetime.datetime.now().time():返回当前时间的时分秒(18:40:24.946237)
- datetime.datetime.ctime():将datetime.datetime类型转化成str类型
import datetime a = datetime.datetime.now() print(a) # 2020-12-13 17:04:35.186835 timeapp = datetime.datetime.ctime(a) print(type(timeapp)) # <class 'str'> print(timeapp) # Sun Dec 13 17:03:36 2020
时间格式转化成字符串
import datetime print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # 2020-12-13 17:07:04
字符串转化成时间格式
a = datetime.datetime.strptime('2020-12-13 17:08:36', '%Y-%m-%d %H:%M:%S') print(type(a)) # <class 'datetime.datetime'> print(a) # 2020-12-13 17:08:36
2、datetime.timedelta
timedelta对象表示两个不同时间之间的差值。如果使用time模块对时间进行算术运行,只能将字符串格式的时间和struct_time格式的时间对象先转换为时间戳格式,然后对该时间戳加上或减去n秒,最后再转换回struct_time格式或字符串格式,这显然很不方便。而datetime模块提供的timedelta类可以让我们很方面的对datetime.date, datetime.time和datetime.datetime对象做算术运算,且两个时间之间的差值单位也更加容易控制。
datetime.timedelta()添加参数,如计算300天是几号。
import datetime timeapp = datetime.datetime.now().date() print(type(timeapp)) # <class 'datetime.date'> print(timeapp) # 2020-12-13 delta = datetime.timedelta(days=300) print(timeapp - delta) # 2020-02-17
datetime.timedelta()也可以多个参数,如计算300天12小时前的时间。
import datetime timeapp = datetime.datetime.now() print(type(timeapp)) # <class 'datetime.datetime'> print(timeapp) # 2020-12-13 17:14:35.253393 delta = datetime.timedelta(days=300, hours=12) print(timeapp - delta) # 2020-02-17 05:14:35.253393
计算天数和秒数。
import datetime print(datetime.timedelta(days=1, hours=32).days) # 2 print(datetime.timedelta(days=1, hours=32).total_seconds()) # 201600.0