返回宝典

时间与日期

上一节 下一节

Python中内置的模块time主要是针对时间;内置模块datetime主要是针对日期而言;两者分别生成的时间对象和日期对象是可以相互转换的。


time模块

Python中使用time.time()获取当前时间,返回代表当前时间的浮点型小数,时间的单位是秒(s)。这里返回的数字,是指针对1970年1月1日北京时间上午8点整(用UTC时间来算,就是1970年1月1日0点0分0秒)这个时间点,而过去了的秒数。

其实不需要知道这么细,只需要知道返回的这个数字能代表当前时间即可。

>>> import time
>>> t = time.time()
>>> t
1551622717.027518
>>> type(t)
<type 'float'>

运行一下


使用time模块的time方法,可在某段程序运行的首尾记录一下时间,最后相减即可获得该段程序的运行耗时:

import time

t1 = time.time() # begin

for i in xrange(10000):
    pass

t2 = time.time() # end
print t2 - t1

运行一下


使用time.sleep(n)可使程序暂停执行n秒。如下例所示,每隔2秒,输出一个整数。(该示例请本地测试,专否沙盒对延时有限制,无法测试本例)

import time

for i in xrange(7):
    print i
    time.sleep( 2 )

datetime模块

Python内置的datetime模块,主要用来对创建与处理日期对象。如下所示,通过datetime.datetime.now()可获得当前日期对象。

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2019, 3, 3, 22, 44, 44, 271057)
>>> print now
2019-03-03 22:44:44.271057

运行一下


上述获取的datetime对象的内置函数和属性很多,示例如下:

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2019, 3, 3, 22, 44, 44, 271057)
>>> now.year
2019
>>> now.month
3
>>> now.day
3
>>> now.hour
22
>>> now.isocalendar()
(2019, 9, 7)
>>> now.isoweekday()
7
>>> now.isoformat()
'2019-03-03T22:44:44.271057'
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'03-03-19. 03 Mar 2019 is a Sunday on the 03 day of March.'

运行一下


使用datetime还可以构建指定日期作为datetime对象。

>>> import datetime
>>> birthday = datetime.datetime( 1900, 12, 25 )
>>> birthday
datetime.datetime(1900, 12, 25, 0, 0)
>>> print birthday
1900-12-25 00:00:00

运行一下


两个datetime变量可以比较大小、相减。

>>> import datetime
>>> birthday = datetime.datetime( 1900, 12, 25 )
>>> now = datetime.datetime.now()

>>> birthday == now
False
>>> birthday < now
True

>>> age = now - birthday
>>> age
datetime.timedelta(43167, 84754, 287277)
>>> print age.days
43167

运行一下


本章只是简单介绍time模块和datetime模块的常用方式;如若遇到进一步需求,可查看模块的reference说明来进行深入研究。写代码嘛,跟着感觉走;把握基础常用的内容即可;遇到具体问题,再搜索找资料来看呗~


时间与日期

上一节 下一节