前言:
在财务数据处理和分析中,时间数据尤为重要,Python 程序能用很多方式处理日期和时间。较常用的是 time 和 datetime 模块,可以用于格式化日期和进行时间计算。
Python中时间的几种表现形式:
- time模块:时间戳,时间元组,时间字符串
- datetime模块:datetime数据类型
time模块
01 引入模块
import time
02 时间戳
时间戳是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。时间戳单位最适于做日期运算。
time.time() # 返回当前时区的时间戳
#输出结果->1582187550.7324438
03 时间元组
时间元祖(struct_time元组)包含9个整型内容:
time.localtime() # 默认返回当前时区的结构化时间,参数为时间戳
#输出结果->time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=16, tm_min=33, tm_sec=8, tm_wday=3, tm_yday=51, tm_isdst=0)
还可以选择其中单个时间元素
time.localtime().tm_year # 如果只需要返回当前年
#输出结果->2020
04 格式化日期
我们可以使用 time 模块的 strftime 方法来格式化日期,:
time.strftime(format,时间元组),返回的是格式化字符串
# 格式化成2016-03-20 11:45:39形式
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#输出结果->'2020-02-20 16:38:27'
Python中常用的时间日期格式化符号:
05 格式日期转为时间元组
time.strptime(str,fmt='%Y-%m-%d %H:%M:%S')
根据fmt的格式把一个时间字符串解析为时间元组。
time.strptime('2020-02-20 16:45:00','%Y-%m-%d %H:%M:%S')
#输出->time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=16, tm_min=45, tm_sec=0, tm_wday=3, tm_yday=51, tm_isdst=-1)
datetime模块
datetime也是Python处理日期和时间的标准库。
01 引入
from datetime import datetime
02 获取当前日期和时间
datetime.now()
#输出->2020-02-20 16:51:38.843581
03 获取指定日期和时间
要指定某个日期和时间,我们直接用参数构造一个datetime,返回的是datetime数据类型:
datetime(2020,2,20,12,20)
输出->2020-02-20 12:20:00
04 str转换为datetime
很多时候,日期和时间数据是字符串,要处理日期和时间(比如计算时间间隔),首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:
datetime.strptime('2020-2-1 18:19:59', '%Y-%m-%d %H:%M:%S')
#输出->2015-06-01 18:19:59
05 datetime转换为str
如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:
now = datetime.now()
now.strftime('%a, %b %d %H:%M')
#输出->Thu, Feb 20 17:03,字符串类型
06 datetime加减
对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+和-运算符,不过需要导入timedelta这个方法:
from datetime import datetime, timedelta
now + timedelta(days=2, hours=12)
#输出结果->datetime.datetime(2020, 2, 23, 5, 3, 28, 38006)
还可以得到两个日期间的日期间隔
dt1 = datetime(2020,2,2)
dt2 = datetime(2019,5,14)
(dt1-dt2).days
#输出->264
关于时间的计算,我们会在pandas课程中深入学习。
课堂笔记
- 两个常用的时间模块:time模块和datetime模块
- 时间元组包括9个整型内容,分别是年,月,日,时,分,秒,星期,儒略历,夏令时
- datetime数据类型可以直接进行时间的计算