datetime模块是python自带对时间的操作,其常用的四大类分别是date、time、datetime、timedelta。下面分别讲解下这四大类中常用的方法及其属性。
date类
date类的对象有三个参数构成:year、month、day,我们先创建一个对象。
import datetime
a = datetime.date(2018,10,9)
print(a)
>>>2018-10-09
常用方法:
比较日期大小:共有六种方法,分别是__eq__、ge、gt、le、lt、ne,其分别表示==、>=、>、<=、<、!=,返回的结果是True或False。
import datetime
da = datetime.date(2018,10,9)
be = datetime.date(2018,1,1)
print(da.__eq__(be))
print(da.__ge__(be))
>>>False
True
获取两日期的相差天数:有两种方法,sub__和__rsub,这两种方法本质相同,只是一个正向减,一个反向减。
print(da.__sub__(be))
print(da.__rsub__(be))
>>>281 days, 0:00:00
-281 days, 0:00:00
ISO标准化日期:有三种格式,一种是年-周数-星期数,方法是isocalender;另一种是年-月-日,方法是isofoemat;最后一种是星期数(周一为1,周日为7),方法是isoweekday。
import datetime
da = datetime.date(2018,10,9)
print(da.isocalendar())
print(da.isoformat())
print(da.isoweekday())
>>>(2018, 41, 2)
2018-10-09
2
获取当前日期:
import datetime
to = datetime.date.today()
print(to)
>>>2018-10-09
日期的格式化输出:有三种方法,__format__和strftime方法差不多,第三种是输出ctime格式。
import datetime
da = datetime.date(2018,10,9)
print(da.__format__('%y/%m/%d'))
print(da.strftime('%Y-%m-%d'))
print(da.ctime())
>>>18/10/09
2018-10-09
Tue Oct 9 00:00:00 2018
time类
time类对象参数有hour、minute、second、microsecond、tzinfo,这些参数都是可选参数。我们先创建一个time对象。
import datetime
da = datetime.time(19,30,30)
print(da)
>>>19:30:30
常用方法:
比较时间大小,这个与date一样,有六种方法。
ISO标准化时间:isoformat函数。
print(da.isoformat())
>>>19:30:30
时间字符串输出:有__format__方法和strtfime方法。
import datetime
da = datetime.time(19,30,30)
print(da.__format__('%H/%M/%S'))
print(da.strftime('%I:%M:%S'))
>>>19/30/30
07:30:30
datetime类
datetime类可以看成是date类和time类的结合体,datetime对象的参数有year、month、day、hour、minute、second等,其中年月日参数必须要有。老规矩先创建一个datetime对象。
import datetime
da = datetime.datetime(2018,10,10,0,35,30)
print(da)
>>>2018-10-10 00:35:30
常用方法:
返回当前日期
import datetime
now = datetime.datetime.now()
print(now)
>>>2018-10-10 00:37:31.301851
分别返回对象的日期和时间部分:两个方法,返回日期的date()和返回时间的time()。
print(now.date())
print(now.time())
>>>2018-10-10
00:39:39.242345
返回格林威治时间:utcnow方法
import datetime
now = datetime.datetime.utcnow()
print(now)
>>>2018-10-09 16:40:52.682584
格式化时间输出:用strftime方法
combin方法:将一个date和time对象合成一个datetime对象
import datetime
now = datetime.datetime.now()
date = now.date()
time = now.time()
print(datetime.datetime.combine(date,time))
>>>2018-10-10 00:46:21.209452
strptime方法:由string、format两个参数返回一个datetime对象
print(datetime.datetime.strptime('2017-3-22 15:25','%Y-%m-%d %H:%M'))
>>>2017-03-22 15:25:00
strftime方法:由datetime对象转为string对象。
In [2]: datetime.now().strftime('%y-%m-%d %h:%M:%S')
Out[2]: '19-05-16 May:21:31'
astimezone方法:将一个datetime对象转为有时区的datetime对象,参数tc是时区对象,可由pytz模块生成。
日期时间转为时间戳:timestamp方法
import datetime
now = datetime.datetime.now()
timestamp = now.timestamp()
print(timestamp)
>>>1539103808.218222
时间戳转为日期时间:fromtimestamp方法
time = datetime.datetime.fromtimestamp(timestamp)
print(time)
>>>2018-10-10 00:51:58.044790
timedelta类
此类包含属性days、seconds、microxeconds。此类创建对象的参数为关键字参数,参数没有年、月,由天、微秒、毫秒、周、小时、分钟。
import datetime
delta = datetime.timedelta(days = 2,hours = 2,minutes=30,seconds = 30,microseconds=300,milliseconds=66,weeks = 1)
print(delta)
>>>9 days, 2:30:30.066300