时间模块需要了解的三个概念:时间戳、时间元组、日期字符串
- 时间戳:(timestamp)时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
- 时间元组:(struct_time)时间元组是用一个元组装起来的9组数字处理时间
- 日期字符串:一串显示日期的字符串(注意是字符串,不是时间)
1# 注:同一时间的三种不同显示方式2# 时间戳31574851524.18451074# 时间元组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:日历相关的模块,如:处理年历/月历
一、datetime 模块
datetime 以毫秒形式存储日期和时间。
1from datetime import datetime2now = datetime.now()3print(now)4# 可以输出当前时间的年月日5print("year: {0}, month: {1}, day: {2}".format(now.year, now.month, now.day))67# 输出82019-11-27 18:45:24.1845109year: 2019, month: 11, day: 27
datetime.timedelta 表示两个datetime 对象之间时间差
1from datetime import timedelta23start = datetime.now()4# 输出昨天的日期5new_time = start+timedelta(-1)6print(new_time)78# 输出92019-11-26 18:45:24.184510
datetime 模块中的数据类型
datetiem 模块时间戳和字符串的互转必须通过datetime 时间格式进行过渡
- 时间戳 -> datetime 时间格式 -> 日期字符串
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 时间格式 -> 时间戳
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 函数的用法
二、time 模块
了解time模块之前需要先知道什么是时间元组,元组大家都知道,不记得可以点击 Python入门基础教程-数据类型 查看元组类型。
时间元组也就和它字面意思一样,存的是时间。
时间元组struct_time结构属性
1import time23localtime = time.localtime(time.time())4print("本地时间为 :", localtime)56# 输出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 模块时间戳和字符串的互转也必须通过时间元组进行过渡
- 时间戳 -> 时间元组 -> 日期字符串
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
- 日期字符串 -> 时间元组 -> 时间戳
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 函数是将字符串转换为时间元组
三、calendar 模块
calendar模块的函数都是与日历相关的,比如打印某个月的日历等
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)) 910# 输出11False1213 November 201914Mo Tu We Th Fr Sa Su15 1 2 316 4 5 6 7 8 9 101711 12 13 14 15 16 171818 19 20 21 22 23 241925 26 27 28 29 3020214
对于datetime、time 和calendar 三个时间模块,重点掌握datetime 模块,且datetime 模块中重点掌握字符串和日期的互相转换。
End.
爱数据网专栏作者:xiaoyi
作者介绍:数据分析从业者,金融风控爱好者,不定期原创技术分享,努力成为数据分析、金融风控领域的终身学习者、实践者、传播者
个人微信公众号:小一的学习笔记(ID:xiaoyi_learning)
本文为挖数网专栏作者原创文章,未经允许禁止转载,需要转载请微信联系授权(微信号:lovedata0520)
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论