python的时间模块

本文详细讲解了Python中的time模块,涉及时间戳、字符串时间的格式化、结构化时间的转换,以及datetime模块的使用,包括datetime类的.now()方法、日期时间的获取和转换,以及timedelta类的运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

time模块

时间戳

字符串时间

结构化时间

结构化时间的转换

结构化时间转换成时间戳

结构化时间转换成字符串时间

时间戳的转换

时间戳转换成结构化时间

时间戳转换成字符串时间 

字符串时间的转换

字符串时间转换成结构化时间

字符串时间转换成时间戳

sleep()

 如果计算两个时间差

datetime模块

datetime类

.now()(获取当前时间)

 获取指定日期和时间

将字符串时间转换为时间戳 

 将时间戳转换为字符串时间

将字符串时间转换为datetime类中统一的格式 

timedelta类


time模块

time模块是python的内置模块,无需下载,在使用前导入即可。

time模块一共有3种表示时间的方式。分别是时间戳、字符串时间、结构化时间,这3种都是获取当前的时间,只是输出方式不同而已

时间戳

时间戳,是表示从1970年1月1号0点0分0秒到现在的一个偏移量。一般是一个整数部分有10位的小时。使用模块中的.time()获取。

例子:

import time
print(time.time())    #时间戳
# 输出结构:1647942946.8686996

字符串时间

字符串时间,是可以以字符串的方式返回当前时间,并且返回的格式可以自己控制。使用.strftime()获取。括号内的参数表示返回时间的格式。

常用格式代码:

  1.  %Y 年份,世纪为十进制数。
  2. %m 以十进制数表示的月份 [01,12]。
  3. %d 以十进制数表示的日期 [01,31]。
  4. %H 小时(24 小时制),十进制数 [00,23]。
  5. %M 分钟为十进制数 [00,59]。
  6. %S 秒为十进制数 [00,61]。
  7. %z 与 UTC 的时区偏移。
  8. %a 区域设置的缩写工作日名称。
  9. %A 区域设置的完整工作日名称。
  10. %b 区域设置的缩写月份名称。
  11. %B 语言环境的完整月份名称。
  12. %c 区域设置的适当日期和时间表示。
  13. %I 小时(12 小时制),十进制数 [01,12]。
  14. %p 区域设置相当于 AM 或 PM。
  15. %X表示时分秒。格式是小时-分钟-秒

例子:


print(time.strftime('%Y-%m-%d %X'))
# 2022-03-22 20:29:53
print(time.strftime('%Y年%m月%d日%H时%M分%S秒'))
# 2022年03月22日20时29分53秒

使用时注意大小写! 

结构化时间

又称时间元组。一种Python的数据结构表示。这个元组有9个整型内容。分别表示不同的时间含义。

含义:

  1. tm_year表示年
  2. tm_mon表示月
  3. tm_mday表示号
  4. tm_hour表示小时
  5. tm_min表示分种
  6. tm_sec表示秒
  7. tm_wday表示周几(但是是从0开始,比如星期一为0)
  8. tm_yday表示一年的第几天(从1开始,包括当天)
  9. tm_isdst表示是否是夏令时(默认为-1,0:表示正常格式,1:表示为夏令时格式,-1:表示根据当前的日期时间格式来判定)

例子:

print(time.localtime())
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=22, tm_hour=20, tm_min=56, tm_sec=41, tm_wday=1, tm_yday=81, tm_isdst=0) 

结构化时间的转换

结构化时间转换成时间戳

需要使用到.mktime(p_tuple)方法,p_tuple表示结构化时间

例子:

a=time.localtime()  #获取结构化时间
print(time.mktime(a))#输出结构1647955845.0

结构化时间转换成字符串时间

需要使用到.strftime(format, p_tuple=None)方法,format表示字符串时间的结构,p_tuple表示结构化时间,默认为None,表示当前的字符串时间。

例子

a=time.localtime()  #获取结构化时间
print(time.strftime('%Y-%m-%d',a))#2022-03-22

时间戳的转换

时间戳转换成结构化时间

将时间戳数值输入进.localtime()方法或者.gmtime()。localtime()方法可以将时间转换为当地时间。gmtime()方法表示UTC时间,与英国伦敦时间一致。

例子

a = time.time()  # 获取当前时间戳
print(time.localtime(a))  # 转换为结构化时间
#输出结果
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=22, tm_hour=21, tm_min=5, tm_sec=49, tm_wday=1, tm_yday=81, tm_isdst=0) 

时间戳转换成字符串时间 

时间戳是无法直接转换成字符串时间的,但是结构化时间可以,所以时间戳转换成字符串时间可以先将时间戳转换成结构化时间,再将结构化时间转换成字符串时间

例子

a = time.time()  # 获取当前时间戳
print(time.strftime('%Y-%m-%d',time.localtime(a)))
#输出结构为2022-03-22

先传入字符串时间的格式,再输入结构化时间。

字符串时间的转换

字符串时间转换成结构化时间

使用.strptime(string, format)方法。string表示字符串时间,format表示字符串时间的格式,输入的格式必须和字符串时间相同,否则会报错。输入的字符串也不能使用变量表示,也会报错

例子:

print(time.strptime('2022-03-22','%Y-%m-%d'))
#time.struct_time(tm_year=2022, tm_mon=3, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=81, tm_isdst=-1)

字符串时间转换成时间戳

转换成时间戳也不能直接转换,也需要先转换成结构化时间再转换为时间戳

例子

a=time.strptime('2022-03-22','%Y-%m-%d')    #将这个字符串时间转换为结构化时间
print(time.mktime(a))   #输出结构为1647878400.0

sleep()

原型为sleep(seconds),表示可以使程序暂停一段时间,seconds表示暂停多久,单位为秒

time.sleep(10)        #暂停10秒

 如果计算两个时间差

如果需要计算两个时间差的话,只能使用时间戳进行加减,格式化时间和字符串时间是无法进行加减的。将结束时间减去开始时间再减去1970年1月1号0时0分0秒,因为时间戳是表示一个偏移量,使用使用时间戳计算时间差,所以还需要减去时间戳的初值

# 计算时间差
true_time = time.mktime(time.strptime("2019-09-11 08:30:00", "%Y-%m-%d %H:%M:%S"))
# 将开始时间定为2019-09-11 08:30:00并将该时间转换为时间戳
time_now = time.mktime(time.strptime("2019-09-12 11:30:00", "%Y-%m-%d %H:%M:%S"))
# 将结束时间定为2019-09-12 11:30:00并将该时间转换为时间戳
a = time_now - true_time  # 获得相差的时间戳
print(a)  # 97200.0
struct_time = time.gmtime(a)  # 转换成字符串时间方便输出
print("过去了%d年%d月%d天%d小时%d分钟%d秒" % (struct_time.tm_year - 1970, struct_time.tm_mon - 1,
                                   struct_time.tm_mday - 1, struct_time.tm_hour, struct_time.tm_min,
                                   struct_time.tm_sec))  # 减去初值
# 过去了0年0月1天3小时0分钟0秒

datetime模块

是python处理时间和日期的标准库!也与time一样,直接导入即可,下面暂时只有比较常用的类详情。

datetime类

是datetime模块中比较常用的类别之一。可以获取当前日期时间。

.now()(获取当前时间)

from datetime import datetime  # 从datetime模块中导入datetime类
print(datetime.now())   #获取当前时间
#2022-03-24 17:03:18.469311

获取当前时间,格式为字符串时间的。

 获取指定日期和时间

可以将指定的数据转换为固定的格式(字符串时间),不填默认为0

from datetime import datetime  # 从datetime模块中导入datetime类
print(datetime(2002,11,26))     #2002-11-26 00:00:00

将字符串时间转换为时间戳 

使用.timestamp()可以将字符串时间转换为时间戳

from datetime import datetime  # 从datetime模块中导入datetime类
now_time = datetime.now()  # 获取当前字符串时间
print(now_time)  # 2022-03-24 17:12:02.510907
times = now_time.timestamp()  # 将字符串时间转换为时间戳赋值给times
print(times)  # 1648113122.510907

 将时间戳转换为字符串时间

使用.fromtimestamp()方法可以将时间戳转换为字符串时间

import time  # 导入time模块
from datetime import datetime  # 从datetime模块中导入datetime类
now_time = time.time()  # 获取时间戳
print(now_time)  # 1648113270.9295025
str_time = datetime.fromtimestamp(now_time)  # 转换为字符串时间
print(str_time)  # 2022-03-24 17:14:30.929502

将字符串时间转换为datetime类中统一的格式 

使用.strptime()方法,注意:与time模块一样,两个格式需要一样才能转换

from datetime import datetime  # 从datetime模块中导入datetime类
str_time=datetime.strptime('2002-11-26','%Y-%m-%d')
print(str_time) #2002-11-26 00:00:00

timedelta类

.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) ,这些参数的值默认为0,可根据需要自行更改

  1. days表示天数
  2. seconds表示秒数
  3. microseconds表示微秒数,表示0.000001秒
  4. milliseconds表示毫秒,表示0.001000秒
  5. minutes表示分钟
  6. hours表示小时
  7. weeks表示星期

可以为数字加上特定的单位,并这些数字可以直接在时间上进行运算,可以快速的得到某某时间后的具体日期时间。

from datetime import timedelta
from datetime import datetime
Start_time = datetime(2022, 3, 24)  # 表示开始时间,2022年3月24号
print(Start_time)  # 2022-03-24 00:00:00
time = timedelta(days=1, hours=1)  # 1天1小时
end_time = Start_time + time  # 计算开始时间后的1天1小时
print(end_time)  # 2022-03-25 01:00:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值