Datetime时间模块解析
Posted jarvan-4
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Datetime时间模块解析相关的知识,希望对你有一定的参考价值。
1.1 datetime模块介绍
首先必须做一点理论准备,不然待会都不知道为什么会有这些函数。介绍3个概念:
UTC time Coordinated Universal Time,世界协调时,又称格林尼治天文时间、世界标准时间。与UTC time对应的是各个时区的local time,也就是本地时间,例如我们的北京时间。
epoch time表示时间开始的起点;它是一个特定的时间,不同平台上这个时间点的值不太相同,对于Unix而言,epoch time为 1970-01-01 00:00:00 UTC。
timestamp(时间戳) 也称为Unix时间 或 POSIX时间;它是一种时间表示方式,表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但是有些编程语言的相关方法返回的是秒数。所谓的时间戳timestamp就是当前时间与格林尼治时间1970年1月1日0时0分0秒之间过了多少秒。
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
datetime_CAPI | 日期时间对象C语言接口 |
timedelta | 时间间隔,即两个时间点之间的长度 |
tzinfo | 时区信息对象 |
主要常用的是datetime.date.x datetime.time.x datetime.datetime.x datetime.timedelta 这4个小类
2.1 datetime.time 模块
class datetime.time(hour, [minute[, second, [microsecond[, tzinfo]]]])
hour为必须参数,其他为可选参数。各参数的取值范围为:
参数名称 |
取值范围 |
hour |
[0, 23] |
minute |
[0, 59] |
second |
[0, 59] |
microsecond |
[0, 1000000] |
tzinfo |
tzinfo的子类对象,如timezone类的实例 |
对象方法和属性
对象方法/属性名称 |
描述 |
t.hour |
时 |
t.minute |
分 |
t.second |
秒 |
t.microsecond |
微秒 |
t.tzinfo |
返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None |
t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]]) |
生成并返回一个新的时间对象,原时间对象不变 |
t.isoformat() |
返回一个‘HH:MM:SS.%f’格式的时间字符串 |
t.strftime() |
返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同
|
2.2 datetime.time 代码示例
3.1 datetime.date模块
先来说说date类,其定义如下:
class datetime.date(year, month, day)
year, month 和 day都是是必须参数,各参数的取值范围为:
参数名称 |
取值范围 |
year |
[MINYEAR, MAXYEAR] |
month |
[1, 12] |
day |
[1, 指定年份的月份中的天数] |
类方法和属性
类方法/属性名称 |
描述 |
|
|
|
|
|
|
date.today() |
返回一个表示当前本地日期的date对象 |
date.fromtimestamp(timestamp) |
根据跟定的时间戳,返回一个date对象 |
对象方法和属性
对象方法/属性名称 |
描述 |
d.year |
年 |
d.month |
月 |
d.day |
日 |
d.replace(year[, month[, day]]) |
生成并返回一个新的日期对象,原日期对象不变 |
d.timetuple() |
返回日期对应的time.struct_time对象 |
|
|
d.weekday() |
返回日期是星期几,[0, 6],0表示星期一 |
d.isoweekday() |
返回日期是星期几,[1, 7], 1表示星期一 |
d.isocalendar() |
返回一个元组,格式为:(year, weekday, isoweekday),在于返回多少年,一年的第几周,一周的星期几。 date.isocalendar()[0] or [1] or [2] |
d.isoformat() |
返回‘YYYY-MM-DD’格式的日期字符串 |
d.strftime(format) |
返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
|
3.2 代码示例
4.1 datetime.datetime 模块
datetime类的定义如下:
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
year, month 和 day是必须要传递的参数, tzinfo可以是None或tzinfo子类的实例。
各参数的取值范围为:
参数名称 |
取值范围 |
year |
[MINYEAR, MAXYEAR] |
month |
[1, 12] |
day |
[1, 指定年份的月份中的天数] |
hour |
[0, 23] |
minute |
[0, 59] |
second |
[0, 59] |
microsecond |
[0, 1000000] |
tzinfo |
tzinfo的子类对象,如timezone类的实例 |
如果一个参数超出了这些范围,会引起ValueError异常。
类方法和属性:
类方法/属性名称 |
描述 |
datetime.today() |
返回一个表示当前本期日期时间的datetime对象 |
datetime.now([tz]) |
返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上 |
|
|
datetime.fromtimestamp(timestamp[, tz]) |
根据指定的时间戳创建一个datetime对象 |
|
|
datetime.combine(date, time) |
把指定的date和time对象整合成一个datetime对象 |
datetime.strptime(date_str, format) |
将时间字符串转换为datetime对象 常用pd.to_datetime |
对象方法和属性:
对象方法/属性名称 |
描述 |
dt.year, dt.month, dt.day |
年、月、日 |
dt.hour, dt.minute, dt.second |
时、分、秒 |
dt.microsecond, dt.tzinfo |
微秒、时区信息 |
dt.date() |
获取datetime对象对应的date对象 |
dt.time() |
获取datetime对象对应的time对象, tzinfo 为None |
|
|
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) |
生成并返回一个新的datetime对象,如果所有参数都没有指定,则返回一个与原datetime对象相同的对象 |
|
|
|
|
|
|
dt.weekday() |
同date对象 |
dt.isocalendar() |
同date独享 |
dt.isoformat([sep]) |
返回一个‘%Y-%m-%d |
dt.ctime() |
等价于time模块的time.ctime(time.mktime(d.timetuple())) |
dt.strftime(format) |
返回指定格式的时间字符串 |
4.2 代码介绍
5.1 datetime.timedelta 很少使用。
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)
所有参数都是默认参数,因此都是可选参数。参数的值可以是整数或浮点数,也可以是正数或负数。内部值存储days、seconds 和 microseconds,其他所有参数都将被转换成这3个单位:
- 1毫秒转换为1000微秒
- 1分钟转换为60秒
- 1小时转换为3600秒
- 1周转换为7天
实例方法/属性名称 |
描述 |
td.days |
天 [-999999999, 999999999] |
td.seconds |
秒 [0, 86399] |
td.microseconds |
微秒 [0, 999999] |
td.total_seconds() |
时间差中包含的总秒数,等价于: td / timedelta(seconds=1)
|
6.1 dt访问器 Series
Series对象和DataFrame的列数据提供了cat、dt、str三种属性接口(accessors),分别对应分类数据、日期时间数据和字符串数据,通过这几个接口可以快速实现特定的功能,非常快捷。今天翻阅pandas官方文档总结了以下几个常用的api。
**
1.dt.date 和 dt.normalize(),他们都返回一个日期的 日期部分,即只包含年月日。但不同的是date返回的Series是object类型的,normalize()返回的Series是datetime64类型的。 这里先简单创建一个dataframe。
以上是关于Datetime时间模块解析的主要内容,如果未能解决你的问题,请参考以下文章