datetime
虽然time模块已经能够把有关时间方面的东西搞定了,但是,在某些调用的时候,还感觉不是很直接,于是又出来了一个datetime模块,供程序猿和程序媛们选择使用。
datetime模块中有几个类:
- datetime.date:日期类,常用的属性有year/month/day
- datetime.time:时间类,常用的有hour/minute/second/microsecond
- datetime.datetime:日期时间类
- datetime.timedelta:时间间隔,即两个时间点之间的时间长度
- datetime.tzinfo:时区类
date类
通过实例了解常用的属性:
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2015, 5, 5)
这里其实生成了一个日期对象,然后操作这个对象的各种属性。用print语句,可以是视觉更佳:
>>> print today
2015-05-05
>>> print today.ctime()
Tue May 5 00:00:00 2015
>>> print today.timetuple()
time.struct_time(tm_year=2015, tm_mon=5, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=125, tm_isdst=-1)
>>> print today.toordinal()
735723
特别注意,如果你妄图用datetime.date.year()
,是会报错的,因为year不是一个方法,必须这样行:
>>> print today.year
2015
>>> print today.month
5
>>> print today.day
5
进一步看看时间戳与格式化时间格式的转换
>>> to = today.toordinal()
>>> to
735723
>>> print datetime.date.fromordinal(to)
2015-05-05
>>> import time
>>> t = time.time()
>>> t
1430787994.80093
>>> print datetime.date.fromtimestamp(t)
2015-05-05
还可以更灵活一些,修改日期。
>>> d1 = datetime.date(2015,5,1)
>>> print d1
2015-05-01
>>> d2 = d1.replace(year=2005, day=5)
>>> print d2
2005-05-05
time类
也要生成time对象
>>> t = datetime.time(1,2,3)
>>> print t
01:02:03
它的常用属性:
>>> print t.hour
1
>>> print t.minute
2
>>> print t.second
3
>>> t.microsecond
0
>>> print t.tzinfo
None
timedelta类
主要用来做时间的运算。比如:
>>> now = datetime.datetime.now()
>>> print now
2015-05-05 09:22:43.142520
没有讲述datetime类,因为在有了date和time类知识之后,这个类比较简单,我最喜欢这个now方法了。
对now增加5个小时
>>> b = now + datetime.timedelta(hours=5)
>>> print b
2015-05-05 14:22:43.142520
增加两周
>>> c = now + datetime.timedelta(weeks=2)
>>> print c
2015-05-19 09:22:43.142520
计算时间差:
>>> d = c - b
>>> print d
13 days, 19:00:00