datetime模块是python自带对时间的操作,其常用的四大类分别是date、time、datetime、timedelta。下面分别讲解下这四大类中常用的方法及其属性。
date类
date类的对象有三个参数构成:year、month、day,我们先创建一个对象。
import datetimea = datetime.date(2018,10,9)print(a)>>>2018-10-09
常用方法:
- 比较日期大小:共有六种方法,分别是__eq__、__ge__、__gt__、__le__、__lt__、__ne__,其分别表示==、>=、>、<=、<、!=,返回的结果是True或False。
import datetimeda = 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 datetimeda = datetime.date(2018,10,9)print(da.isocalendar())print(da.isoformat())print(da.isoweekday())>>>(2018, 41, 2) 2018-10-09 2
- 获取当前日期:
import datetimeto = datetime.date.today()print(to)>>>2018-10-09
- 日期的格式化输出:有三种方法,__format__和strftime方法差不多,第三种是输出ctime格式。
import datetimeda = 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 datetimeda = datetime.time(19,30,30)print(da)>>>19:30:30
常用方法:
- 比较时间大小,这个与date一样,有六种方法。
- ISO标准化时间:isoformat函数。
print(da.isoformat())>>>19:30:30
- 时间字符串输出:有__format__方法和strtfime方法。
import datetimeda = 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 datetimeda = datetime.datetime(2018,10,10,0,35,30)print(da)>>>2018-10-10 00:35:30
常用方法:
- 返回当前日期
import datetimenow = 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 datetimenow = datetime.datetime.utcnow()print(now)>>>2018-10-09 16:40:52.682584
- 格式化时间输出:用strftime方法
- combin方法:将一个date和time对象合成一个datetime对象
import datetimenow = 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
- 日期时间转为时间戳:timestamp方法
import datetimenow = 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 datetimedelta = datetime.timedelta(days = 2,hours = 2,minutes=30,seconds = 30,microseconds=300,milliseconds=66,weeks = 1)print(delta)>>>9 days, 2:30:30.066300