2.10 日期和时间

日期和时间并不是Python的基础数据类型,但是一个非常常用且重要的类型。

时间,既简单又复杂。说它简单,是因为每个人在日常生活中每天都会接触到;说它复杂,是因为人类至今未能对它有精确的定义。

对于程序员而言,说它简单,是因为已经有很多成熟的模块帮助我们来处理与时间相关的任务;说它复杂,是因为时间牵涉到时区、语言、计算、精度等方面,非常烦琐。

Python有datetime模块,这个模块有几个细分的类型:

·如果应用场景只关心日期(年、月、日),用Date类型。

·如果应用场景只关心时间(小时、分、秒、毫秒),用Time类型。

·如果应用场景对日期和时间都关心,用Datetime类型。

我们从最简单的任务开始:获取当前时间。


>>> from datetime import datetime
>>> current_time = datetime.now()
>>> print(current_time)
2019-03-17 09:21:06.553652

从print语句的输出可以容易地看出获取到的“当前时间”的信息,这些信息包括:年、月、日、小时、分、秒、微秒(microsecond)。

我们来看一下获取到的当前时间。


>>> from datetime import datetime
>>> current_time = datetime.now()
>>> current_time
datetime.datetime(2019, 3, 17, 9, 21, 6, 553652)

还可以更直观地看到时间信息的各个构成部分。


>>> current_time.year
2019
>>> current_time.month
3
>>> current_time.day
17
>>> current_time.hour
9
>>> current_time.minute
21
>>> current_time.second
6

如果用type方法来查看其中的类型,我们可以看到year其实就是简单的int类型。


>>> type(current_time)
<class 'datetime.datetime'>
>>> type(current_time.year)
<class 'int'>

如果我们关心的只是日期部分,可以只用日期的部分。


>>> today = datetime.now().date()
>>> today
datetime.date(2019, 3, 17)
>>> today.year
2019
>>> today.hour
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
AttributeError: 'datetime.date' object has no attribute 'hour'