Python time和datetime用法小结

Python内置两个关于时间处理的包,timedatetime。本文用于记录笔者在使用这两个包时的一些心得,将会不间断更新。

从命名上讲,time包提供处理时间相关的函数,datetime包提供处理时间日期相关的函数。

time包

time.sleep()

time.sleep()time包中使用最频繁的函数之一,它接收一个参数,用于以单位秒指定睡眠时间,任何调用该方法的线程都会阻塞至计时完成。

time.sleep(1)  # 当前线程将睡眠1s

time.time()

计时绕不开一个固定时间,1970年,为什么?因为1970年是距今最早的的1月1日是星期一的日期,计算当前时间是星期几时最为方便,是一个合适的初始时间锚定值。

 
time.time()则是time包中使用最频繁的又一个函数,它返回一个秒级别的时间戳(本质上是从1970至今经过的秒数,float类型,小数点后范围不定)。
在这里插入图片描述
在这里插入图片描述

时间戳不会重复,也包含了时间信息,因此常用作任务的task_id(也可以使用uuid)。

在对时间不那么精确的条件下,经常去掉小数部分:

import time

print(round(time.time()))  # 1641712467

也可以将时间戳转换为日期格式:

import time

print(time.localtime(time.time()))
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

在这里插入图片描述
time.mktime将struct_time格式转回成时间戳(存在精度损失):

import time

now = time.localtime(time.time())
print(now)

print(time.mktime(now))

在这里插入图片描述

时间格式指定

time.strftime("%Y-%m-%d %H:%M:%S")里面的格式控制字符有哪些呢?参见下表:

格式说明
%a显示简化星期名称
%A显示完整星期名称
%b显示简化月份名称
%B显示完整月份名称
%c本地相应的日期和时间表示
%d显示当月第几天
%H按24小时制显示小时
%I按12小时制显示小时
%j显示当年第几天
%m显示月份
%M显示分钟数)
%p本地am或者pm的相应符
%S显示秒数)
%U一年中的星期数
%w显示在星期中的第几天,默认从0开始表示周一
%W和%U基本相同
%x本地相应日期
%X本地相应时间
%y去掉世纪的年份(00 - 99)
%Y完整的年份
%Z时区的名字(如果不存在为空字符)
%%‘%’字符

同样适用于下面的datetime.datetime.now.strftime()

datetime包

datetime.datetime.now()

datetime.datetime.now()是datetime包中使用最为频繁的一个函数,它用于获取当前的日期和时间:

import datetime

now = datetime.datetime.now()
print(now)
print(type(now))  # 注意是datetime对象类型

在这里插入图片描述
底层也是依赖time.time()实现的。
在这里插入图片描述

可以转换成整洁的字符格式日期:

import datetime

now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(now)

在这里插入图片描述

使用示例:计算当前时间及24小时之前的时间

假设我们要统计一天之内的数据(比如测算服务器一天之内的qps),那就需要从当前时间倒推24h。

使用time包实现:

import time

start_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time() - 86400))
end_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))

print(start_time)
print(end_time)

在这里插入图片描述

使用datetime包实现:

import datetime

end_time = datetime.datetime.now()
start_time = end_time - datetime.timedelta(days=1)

start_time = start_time.strftime("%Y-%m-%d %H:%M:%S")
end_time = end_time.strftime("%Y-%m-%d %H:%M:%S")

print(start_time)
print(end_time)

在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值