Python模块之时间模块学习笔记

目录

一、time模块

1、当前时间浮点数  time()

2、时间元组 localtime()  

3、时间字符串  

4、格式化字符串time类 strftime 方法

5、字符串时间转时间元组   strptime()

6、time.sleep() 

7、常用的时间格式

二、datetime模块 

1、date类

(1)打印当前日期

(2)当前日期字符串

(3)字符日期转日期

(4)replace(...)

2、time类

3、datetime类

(1)打印当前时间

(2)当前时间转字符串显示

(3)将字符串时间转datetime

(4)专属于datetime的方法

4、timedelta

5、fromtimestamp()


python与时间处理相关的模块有两个: time模块和datetime模块。

time模块提供两种时间表达方式(假定一个零点基准,偏移长度换算为按秒的数值型和由 9 个整数组成的元组 struct_time 表示的时间), 前面这种一般在测试函数的执行时长时候用到。

datetime模块, 常用类有4个(date, time, datetime, timedelta)

一、time模块

使用之前, 要导入时间模块import time

时间表示的几种类型

- 时间戳:time.time()

- 字符串的时间:time.ctime()

- 元组类型的时间:time.localtime()

time模块提供了时间相关的类和函数。 常用的就是一个类struct_time, 这里面有表示时间的9个整数组成的元组。

关于time模块, 常用的是下面的5个函数:

1、当前时间浮点数  time()

second = time.time()    
>>>1592451544.5129032

# 主要应用于程序运行时间的计算
starttime = time.time()
函数体()
endtime = time.time()
print('======程序运行用时',endtime-starttime,'s======')

2、时间元组 localtime()  

这个函数可以把上面的这种浮点转成struct_time

s=time.time()
local_time = time.localtime(s) #将时间戳转换为时间元组
#等同于local_time = time.localtime()

>>>time.struct_time(tm_year=2020, tm_mon=6, tm_mday=18, tm_hour=10, tm_min=21, tm_sec=56, tm_wday=3, tm_yday=170, tm_isdst=0)

local_time   # 这里面就可以通过相应的属性名获取相应的属性, tm_wday表示周几, tm_yday表示一年的第多少天。

3、时间字符串  

time 类 asctime 方法,将struct_time类型转换为时间字符串

str_time = time.asctime(local_time)
#等同于time.ctime()
>>>'Thu Jun 18 10:21:56 2020'

4、格式化字符串time类 strftime 方法

按照时间格式要求,格式化 struct_time 为时间字符串。.strftime的时间参数为元组或struct_time。

format_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
>>>'2020-06-18 10:21:56'

5、字符串时间转时间元组 strptime()

str_to_struct = time.strptime(format_time, '%Y-%m-%d %H:%M:%S')  
# 注意:第二个参数的时间格式,要匹配上第一个参数的时间格式。

6、time.sleep() 

推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。

time.sleep(5) # 参数为秒, 主要应用于程序延时

7、常用的时间格式

二、datetime模块 

datetime模块里面有四个常用类, date, datetime, time, timedelta。

date: 日期类, 包括属性年月日及相关方法

time: 时间类, 包括属性时分秒及相关方法

datetime: 日期时间,继承于 date,包括属性年、月、日、时、分、秒等及相关方法,其中年月日必须参数

timedelta: 两个 datetime 值的差,比如相差几天(days)、几小时(hours)、几分(minutes)等

首先依然是先导入:import datetime

1、date类

date表示日期, date对象由year年份、month月份及day日期三部分构成,yearmonthday三个数据描述符可以进行访问。date(year,month,day)

(1)打印当前日期

tod = datetime.date.today()
>>>2021-12-18

tod=datetime.date(2021,3,18)
>>>2021-03-18

(2)当前日期字符串

str_date = datetime.date.strftime(tod, '%Y-%m-%d')
>>>'2020-06-18'

(3)字符日期转日期

# date 类里没有 strptime 方法,它的子类 datetime 才有解析字符串日期的方法 strptime。

str_to_date = datetime.datetime.strptime('2020-02-22', '%Y-%m-%d')
>>>2020-02-22 00:00

(4)replace(...)

返回一个替换指定日期字段的新date对象。参数3个可选参数,分别为year,month,day。注意替换是产生新对象,不影响原date对象。 

>>> a = datetime.date(2017,3,22)
>>> b = a.replace(2017,2,28)
>>> a
datetime.date(2017, 3, 22)
>>> b
datetime.date(2017, 2, 28)

2、time类

time类由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成。

 time([hour[, minute[, second[, microsecond[, tzinfo]]]]])
#时间转字符串输出
a = datetime.time(12,20,59,899)
a.strftime('%H:%M:%S')
>>>'12:20:59'

3、datetime类

这个类继承于date, 并且在日期的基础上加上了time。 常用的依然是获取当前时间, 当前时间格式化, 然后再变回去。

(1)打印当前时间

right = datetime.datetime.now()
>>>2021-12-18 14:19:12.826110

(2)当前时间转字符串显示

str_time = datetime.datetime.strftime(right,'%Y-%m-%d %H:%M:%S')
>>>'2020-06-18 10:31:43'

(3)将字符串时间转datetime

str_time = datetime.datetime.strptime(right, '%Y-%m-%d %H:%M:%S')
>>>2020-06-18 10:31:43

(4)专属于datetime的方法

#date方法
a = datetime.datetime.now()
print(a.date())
>>>2021-12-18

#time方法
print(a.time())
>>>14:22:38.462607

4、timedelta

求两个 datetime 类型值的差,返回差几天:days,差几小时:hours 等. 相减的两个时间,不能一个为 date 类型,一个为 datetime 类型,尽管两个类型是父子关系。

d1 = datetime.datetime.now()
d2 = d1 - datetime.timedelta(hours=10)
print(d1, d2)  
>>>2020-06-18 11:08:26.659060 2020-06-18 01:08:26.659060

这个在时间序列的数据处理上也是非常常用的, 和pandas的pd.DateOffset类似, 可以计算时间差, 尤其是做滞后特征的时候。

5、fromtimestamp()

将时间戳转换为datetime

t = time.time()
print(t)
dt = datetime.datetime.fromtimestamp(t)
print(dt)

参考文章:

Python datetime模块详解

Python中的时间模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值