前言:

在财务数据处理和分析中,时间数据尤为重要,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数据类型可以直接进行时间的计算