前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python入门进阶教程-时间序列

Python入门进阶教程-时间序列

作者头像
小一不二三
发布2019-12-31 16:38:55
2.5K0
发布2019-12-31 16:38:55
举报

作者:一叶

介绍:放不下灵魂的搬砖者

全文共1943字,阅读全文需9分钟

Python版本3.8.0,开发工具:Pycharm

时间模块需要了解的三个概念:时间戳、时间元组、日期字符串

  • 时间戳:(timestamp)时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
  • 时间元组:(struct_time)时间元组是用一个元组装起来的9组数字处理时间
  • 日期字符串:一串显示日期的字符串(注意是字符串,不是时间)
代码语言:javascript
复制
1# 注:同一时间的三种不同显示方式
2# 时间戳
31574851524.1845107
4# 时间元组
5本地时间为 : time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=18, tm_min=45, tm_sec=24, tm_wday=2, tm_yday=331, tm_isdst=0)
6# 日期字符串
72019-11-27 18:45:24

Python 标准库包含用于日期(date)和时间(time)数据的数据类型,而且还有日历方面的功能。

在做数据分析的过程中,我们主要会用到datetime、time 以及calendar 模块,其中datetime 是用的最多的。

  • time:处理时间的模块,如获取时间戳,格式化日期等
  • datetime:date 和time 的结合体,处理日期和时间
  • calendar:日历相关的模块,如:处理年历/月历

01

datetime 模块

datetime 以毫秒形式存储日期和时间。

代码语言:javascript
复制
1from datetime import datetime
2now = datetime.now()
3print(now)
4# 可以输出当前时间的年月日
5print('year: {0}, month: {1}, day: {2}'.format(now.year, now.month, now.day))
6
7# 输出
82019-11-27 18:45:24.184510
9year: 2019, month: 11, day: 27

datetime.timedelta 表示两个datetime 对象之间时间差

代码语言:javascript
复制
from datetime import timedelta

start = datetime.now()
# 输出昨天的日期
new_time = start+timedelta(-1)
print(new_time)

# 输出
2019-11-26 18:45:24.184510

datetime 模块中的数据类型

类型

说明

date

以公历形式存储日历日期(年、月、日)

time

将时间存储为时、分、秒、毫秒

datetime

存储日期和时间

timedelta

表示两个datetime 值之间的查(日、秒、毫秒)

datetiem 模块时间戳和字符串的互转必须通过datetime 时间格式进行过渡

  • 时间戳 -> datetime 时间格式 -> 日期字符串
代码语言:javascript
复制
 1# 获取当前时间戳
 2timestamp = time.time()
 3# 时间戳timestamp 转datetime时间格式
 4datetime_time = datetime.fromtimestamp(timestamp)
 5# datetime时间格式转为日期字符串
 6datetime_str = datetime_time.strftime("%Y-%m-%d %H:%M:%S")
 7print(datetime_str)
 8
 9# 输出
102019-11-27 18:53:03
  • 日期字符串 -> datetime 时间格式 -> 时间戳
代码语言:javascript
复制
 1# 定义日期字符串
 2datetime_str = '2019-11-30 00:00:01'
 3# 日期字符串转为datetime时间格式
 4datetime_time = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S')
 5# datetime时间格式转为时间戳
 6datetime_timestamp = time.mktime(datetime_time.timetuple())
 7print(datetime_timestamp)
 8
 9# 输出
101575043201.0

注:

  • 常用的基本操作为字符串转日期和日期转字符串,即以上转换的后半节和前半节
  • 注意strftime 函数和strptime 函数的用法

02

time 模块

了解time模块之前需要先知道什么是时间元组,元组大家都知道,不记得可以点击 Python入门基础教程-数据类型 查看元组类型。 时间元组也就和它字面意思一样,存的是时间。

时间元组struct_time结构属性

序号

属性

0

tm_year

2008

1

tm_mon

1 到 12

2

tm_mday

1 到 31

3

tm_hour

0 到 23

4

tm_min

0 到 59

5

tm_sec

0 到 61 (60或61 是闰秒)

6

tm_wday

0到6 (0是周一)

7

tm_yday

一年中的第几天,1 到 366

8

tm_isdst

是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

代码语言:javascript
复制
1import time
2
3localtime = time.localtime(time.time())
4print("本地时间为 :", localtime)
5
6# 输出
7本地时间为 : time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=18, tm_min=56, tm_sec=3, tm_wday=2, tm_yday=331, tm_isdst=0)

time 模块时间戳和字符串的互转也必须通过时间元组进行过渡

  • 时间戳 -> 时间元组 -> 日期字符串
代码语言:javascript
复制
 1# 获取当前时间戳
 2timestamp = time.time()
 3# 时间戳timestamp 转时间元组
 4time_tuple = time.localtime(timestamp)
 5# 时间元组转为日期字符串
 6time_str = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)
 7print(time_str)
 8
 9# 输出
102019-11-27 18:56:03
  • 日期字符串 -> 时间元组 -> 时间戳
代码语言:javascript
复制
 1# 定义日期字符串
 2time_str = '2019-11-30 00:00:01'
 3# 日期字符串转为时间元组
 4time_tuple = time.strptime("2019-11-30 00:00:01", "%Y-%m-%d %H:%M:%S")
 5# 时间元组转为时间戳
 6timestamp = time.mktime(time_tuple)
 7print(timestamp)
 8
 9# 输出
101575043201.0

注:

  • strftime 函数是将时间元组转换为日期字符串
  • strptime 函数是将字符串转换为时间元组

03

calendar 模块

calendar模块的函数都是与日历相关的,比如打印某个月的日历等

代码语言:javascript
复制
 1import calendar
 2
 3# 判断2019年是不是闰年
 4print(calendar.isleap(2019))
 5# 打印2019年11月的日历
 6print(calendar.month(2019, 11))
 7# 返回2019年11月15号是星期几(0是星期一,依次类推)
 8print(calendar.weekday(2019, 11, 15))
 9
10# 输出
11False
12
13   November 2019
14Mo Tu We Th Fr Sa Su
15             1  2  3
16 4  5  6  7  8  9 10
1711 12 13 14 15 16 17
1818 19 20 21 22 23 24
1925 26 27 28 29 30
20
214

对于datetime、time 和calendar 三个时间模块,重点掌握datetime 模块,且datetime 模块中重点掌握字符串和日期的互相转换。

下节将介绍Python 数据库操作

Python系列

Python系列会持续更新,从基础入门到进阶技巧,从编程语法到项目实战。若您在阅读的过程中发现文章存在错误,烦请指正,非常感谢;若您在阅读的过程中能有所收获,欢迎一起分享交流。

如果你也想和我一起学习Python,关注我吧!

学习Python,我们不只是说说而已

End

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知秋小梦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • datetime 模块
  • time 模块
  • calendar 模块
  • Python系列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档