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时间模块解析的主要内容,如果未能解决你的问题,请参考以下文章

datetime模块

python模块datetime将字符串转换为日期

基于Python的datetime模块和time模块源码阅读分析

Python时间模块之Time模块解析

Python STL datetime

pandas学习笔记三时间序列