7.1 获取当前时刻的时间
获取当前时刻的时间就是获取此时此刻与时间相关的数据,除了具体的年、月、日、时、分、秒,还会单独看年、月、周、日等指标。
7.1.1 返回当前时刻的日期和时间
返回当前时刻的日期和时间在Python中借助函数now()实现。使用如下代码:
from datetime import datetimedatetime.now()

7.1.2 分别返回当前时刻的年、月、日
返回当前时刻的年、月、日,在Python中分别借助函数year、month、day实现。使用如下代码:
datetime.now().year
datetime.now().month
datetime.now().day

7.1.3 返回当前时刻的周数
与当前时刻的周相关的数据有两个,一个是当前时刻是一周中的周几,另一个是返回当前时刻所在的周在全年的周里面是第几周。
返回周几
返回当前时刻是周几在Python中借助weekday()函数实现。
在Python中使用如下代码:
datetime.now().weekday()+1

Python中周几是从0开始数的,周日返回的是6,所以在后面加1。
返回周数
返回当前时刻所在周的周数在Python中使用的是isocalendar()函数。
在Python中使用如下代码:
datetime.now().isocalendar()
datetime.now().isocalendar()[1]

7.2 指定日期和时间的格式
借助date()函数将日期和时间设置成只展示日期。

借助time()函数将日期和时间设置成只展示时间。

借助strftime()函数可以自定义时间和日期的格式,strftime()函数是将日期和时间的格式转化为某些自定义的格式,具体的格式有以下几种。


7.3 字符串和时间格式相互转换
7.3.1 将时间格式转换为字符串格式
使用str()函数将时间格式转换为字符串格式,示例如下:

7.3.2 将字符串格式转换为时间格式
使用parse()函数将字符串格式转换为时间格式。

7.4 时间索引
时间索引就是根据时间来对时间格式的字段进行数据选取的一种索引方式。
在Python中,可以选取具体的某一时间对应的值,也可以选取某一段时间内的值。
新建一个时间索引的DataFrame如下:
import pandas as pdimport numpy as npindex = pd.DatetimeIndex(['2021-01-01','2021-01-02','2021-01-03','2021-01-04','2021-01-05','2021-01-06','2021-01-07','2021-01-08','2021-01-09','2021-01-10'])data = pd.DataFrame(np.arange(1,11),columns = ["num"],index = index)data

获取2021年的数据:
data["2018"]

获取2021年1月的数据:
data["2021-01"]

获取2021年1月1日到2021年1月5日的数据:
data["2021-01-01":"2021-01-05"]

获取2021年1月1日的数据:
data["2021-01-01":"2021-01-01"]

上面的索引方法适用于索引是时间的情况下,但是并不是在所有情况下,时间都可以做索引,比如一个订单表中客户姓名是索引,成交时间就是一个普通列,这个时候你想选取某一段时间内的成交订单该怎么办呢?因为时间也是有大小关系的,所以我们可以利用前面学过的索引方式中的布尔索引来对非索引列的时间进行选取,代码如下:

7.5 时间运算
7.5.1 两个时间之差
在Python中两个时间做差会返回一个timedelta对象,该对象中包含天数、秒、微秒三个等级,如果要获取小时、分钟,则需要进行换算。

7.5.2 时间偏移
时间偏移是指给时间往前推或往后推一段时间,即加或减一段时间。
在Python中实现时间偏移的方式有两种:第一种是借助timedelta,但是它只能偏移天、秒、微秒单位的时间;第二种是用Pandas中的日期偏移量(dateoffset)。
timedelta
由于timedelta只支持天、秒、微秒单位的时间运算,如果是其他单位的时间运算,则需要换算成以上三种单位中的一种方可进行偏移。

date offset
date offset 可以直接实现天、小时、分钟单位的时间偏移,不需要换算,相比timedelta要方便一些。

