ljzsdut
GitHubToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage

20.5 Time模块

sleep()方法

import time
time.sleep(3)  #代码执行暂停3s

字符串时间

t=time.ctime()     #当前系统时间
print(t)
# Fri Oct 20 12:24:28 2017

时间戳

t=time.time()   #当前系统时间戳
print(t)
# 1508473468.7305713

时间对象(时间元组)

print(time.gmtime())	#返回一个struct_time时间对象,可以分别调用时间的各个组成部分.utc时间
# time.struct_time(tm_year=2017, tm_mon=10, tm_mday=20, tm_hour=4, tm_min=13, tm_sec=14, tm_wday=4, tm_yday=293, tm_isdst=0)
r=time.gmtime()
print(r.tm_year)
# 2017


print(time.localtime())    #返回本地当前时间的struct_time对象(时间元组)
#time.struct_time(tm_year=2021, tm_mon=8, tm_mday=7, tm_hour=21, tm_min=23, tm_sec=22, tm_wday=5, tm_yday=219, tm_isdst=0)

转换

img

时间元组生成时间戳

t1 = (2020, 9, 23, 16, 0, 0, 0, 0, 0)
t=time.mktime(t1) #生成时间戳
# 1600848000.0

t2=time.localtime()  #时间元组
print(time.mktime(t2))    #时间对象struct_time转换为时间戳
# 1508483326.0

时间戳转换为字符串

t1=time.time()
print(time.ctime(t1))      #时间戳转换为字符串
# Fri Oct 20 15:08:46 2017

字符串转时间元组

print(time.strptime("2016/05/22","%Y/%m/%d"))   #字符串转时间对象
# time.struct_time(tm_year=2016, tm_mon=5, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=143, tm_isdst=-1)

datetime模块

相比于time模块,datetime模块的接口则更直观、更容易调用

datetime模块定义了下面这几个类:

  • datetime.date:表示日期的类。常用的属性有year, month, day;
  • datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期时间。
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
  • datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)

我们需要记住的方法仅以下几个:

  1. d=datetime.datetime.now() 返回当前的datetime日期类型
d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调用
  1. datetime.date.fromtimestamp(322222) 把一个时间戳转为datetime日期类型

  2. 时间运算

>>> datetime.datetime.now()
datetime.datetime(2017, 10, 1, 12, 53, 11, 821218)
>>> datetime.datetime.now() + datetime.timedelta(4) #当前时间 +4天
datetime.datetime(2017, 10, 5, 12, 53, 35, 276589)
>>> datetime.datetime.now() + datetime.timedelta(hours=4) #当前时间+4小时
datetime.datetime(2017, 10, 1, 16, 53, 42, 876275)

4.时间替换

>>> d.replace(year=2999,month=11,day=30)
datetime.date(2999, 11, 30)