Pandas 时间序列学习

一、datetime模块介绍

1. datetime模块包含如下类

类名 功能说明
date 日期对象,常用的属性有year, month, day
time 时间对象
datetime 日期时间对象,常用的属性有hour, minute, second, microsecind
Timedelta 时间间隔,即两个时间点之间的长度

2. datetime模块中包含的常量

常量 功能说明 用法 返回值
MAXYEAR 返回能表示的最大年份 datetime.MAXYEAR 9999
MINYEAR 返回能表示的最小年份 datetime.MINYEAR 1

二、date类

1.date对象构成及构造函数

1.1 date对象由year年份,month月份和day日期三部分构成

# 构造函数
date(year, month, day)

# 访问元素
>> a = datetime.date.today()
>> a.year, a.month, a.day

>> (2020, 11, 16)

2 对date的操作

2.1 比较大小

a = datetime.date(2011, 1, 1)
b = datetime.date(2011, 1, 2)
a == b, a <= b, a >= b

# output
(False, True, False)

2.2 作差

a = datetime.date(2011, 1, 1)
b = datetime.date(2011, 1, 2)

a - b, b - a

# output
(datetime.timedelta(days=-1), datetime.timedelta(days=1))

2.3 其他方法和属性

2.3.1 根据时间戳返回一个date对象
datetime.date.fromtimestamp(1599114180.0)

# output
datetime.datetime(2020, 9, 3)

3.date对象的字符串输出

3.1 格式化输出

a = datetime.date(2011, 1, 1)
a.strftime('%Y-%m-%d')

# output
'2011-01-01'

3.2 简单转字符串输出

a = datetime.date(2011, 1, 1)
str(a)

# output
'2011-01-01'

三、time类

1.time类的数据构成及构造函数

1.1 time对象由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成

time([hour[, minute[, second[, microsecond[, tzinfo]]]]])

e.g.

a = datetime.time(12, 20, 59, 899)
a, a.hour, a.minute, a.second, a.microsecond, a.tzinfo

# output
(datetime.time(12, 20, 59, 899), 12, 20, 59, 899, None)

2. 对time的操作

2.1 比较大小

a = datetime.time(12, 20, 59, 999)
b = datetime.time(12, 20, 59, 998)

a == b, a >= b , a <= b

# output
(False, True, False)

2.2 time不支持作差,需要使用datetime类

3. time对象字符串输出

四、datetime类

1.datetime类的数据构成及构造函数

datetime类其实是可以看做是date类和time类的合体,其大部分的方法和属性都继承于这二个类,相关的操作方法请参阅,本文上面关于二个类的介绍。其数据构成也是由这二个类所有的属性所组成的。

# 构造函数
datetime(year, month, day, hour, minute, second, microsecond, tzinfo)


a = datetime.datetime(2020, 11, 16, 20, 28, 59, 999)
a.year, a.month, a.day, a.hour, a.minute, a.second, a.microsecond, a.tzinfo

# output
(2020, 11, 16, 20, 28, 59, 999, None)

2.对datetime对象的操作

2.1 datetime对象返回一个 date对象 或 一个time对象

dt = datetime.datetime.now()
dt.date(), dt.time()

# output
(datetime.date(2020, 11, 16), datetime.time(20, 49, 18, 116494))

2.2 combine(…) 合并date对象和time对象到datetime对象

d = datetime.date(2020, 11, 16)
t = datetime.time(20, 47, 59, 999)
dt = datetime.datetime.combine(d, t)

dt

# output
datetime.datetime(2020, 11, 16, 20, 47, 59, 999)

2.3 strptime(str, format) 根据format 将str生成datetime对象

str = '2020年11月16日 20:50'
dt = datetime.datetime.strptime(str, "%Y年%m月%d日 %H:%M")

dt

# ooutput
datetime.datetime(2020, 11, 16, 20, 50)

2.4 fromtimestamp(time_stamp)将time_stamp转换datetime对象

dt = datetime.datetime.fromtimestamp(1599114180.0)
dt

# output
datetime.datetime(2020, 9, 3, 14, 23)

五、 timedelta类

timedelta类是用来计算二个datetime对象的差值的。
此类中包含如下属性:
1、days:天数
2、microseconds:微秒数(>=0 并且 <1秒)
3、seconds:秒数(>=0 并且 <1天)

六、一点练习

1.获取当前日期时间:

now = datetime.datetime.now()
now, now.date(), now.time()
  1. 获取上个月第一天和最后一天的日期
ans1 = datetime.datetime(now.year, now.month-1, 1)
ans2 = datetime.datetime(now.year, now.month, 1) - datetime.timedelta(1)

ans1, ans2
  1. 获取时间差
starttime = datetime.datetime.now()
endtime = datetime.datetime.now()

(endtime - starttime).seconds # {timedelta属性:days, seconds, microseconds}
  1. 计算当前时间向后8个小时的时间
now = datetime.datetime.now()
d2 = now + datetime.timedelta(hours = 8, minutes = 9, seconds = 10, microseconds = 11)

d2

# output
datetime.datetime(2020, 11, 17, 5, 23, 47, 818430)

猜你喜欢

转载自blog.csdn.net/qq_32963855/article/details/109730284