
本文共 3517 字,大约阅读时间需要 11 分钟。
Python时间和日期处理模块
Python time
和 datetime
模块是处理时间和日期的核心工具,功能强大且广泛应用于开发中。本文将详细介绍这些模块的主要功能和使用方法。
1. time模块
time
模块提供了一系列函数来处理和格式化时间信息,主要包含以下功能:
1.1 time函数
time.time()
返回当前系统时间的时间戳(Unix时间),以秒为单位。返回的值是浮点数。
import timenow = time.time()print("%f" % now) # 输出当前时间戳
1.2 localtime函数
time.localtime()
将时间戳格式化为本地时间,返回一个 struct_time
对象。这可以用于获取当前时间或自定义时间的格式化结果。
import timeprint(time.localtime()) # 返回当前系统时间print(time.localtime(0)) # 返回 Unix 时间 0 对应的本地时间
1.3 mktime函数
time.mktime()
与 localtime()
相反,它接收 struct_time
对象并返回对应的时间戳。
import timesecs = time.mktime((2020, 9, 27, 15, 0, 0, 6, 271, 0))print("%f" % secs) # 输出对应的 Unix 时间戳# 将时间戳转换为 UTC 时区的时间print("%f" % time.mktime(time.localtime(secs)))
1.4 gmtime函数
time.gmtime()
将一个时间戳转换为 GMT(协调世界时)时区的 struct_time
对象,默认使用当前时间。
import timeprint(time.gmtime()) # 返回当前的 GMT 时间print(time.gmtime(0)) # 显然 Unix 时间 0 对应的 GMT 时间
1.5 asctime函数
time.asctime()
将一个 struct_time
对象格式化为可读的字符串形式,例如 "Tue Jul 17 17:03:01 2018"。
import timet =(2018,7,17,17,3,1,1,1,0)print(time.asctime(t)) # 格式化为常貌易懂的时间格式print(time.asctime(time.localtime())) # 获取当前时间的格式化字符串
1.6 ctime函数
time.ctime()
将时间戳格式化为类似 asctime
的字符串形式。
import timeprint("%s" % time.ctime()) # 返回当前时间的ctime表示print("%s" % time.ctime(0)) # 显然后前时间0的ctime表示
1.7 sleep函数
time.sleep()
用于在线程中暂停执行。
import timeprint("%s" % time.ctime())time.sleep(3)print("%s" % time.ctime())
1.8 clock函数
time.clock()
返回当前 CPU 的 CPU 时间,以浮点数形式表示。
import timestart = time.clock()time.sleep(0.1)print(time.clock() - start) # 返回 elapsed 时间
1.9 strftime函数
dateutil.strftime()
格式化时间或日期为特定的字符串格式。
import datetimet = (2018,7,17,17,3,1,1,1,0)t_mk = datetime.mktime(t)print(datetime.strftime("%b %d %Y %H:%M:%S", t_mk))
2. datetime模块
datetime
模块提供了更全面的时间和日期处理功能,可以将日期和时间结合起来使用。
2.1 date对象
date
类表示日期,无法包含时间信息。
import datetimeprint(datetime.date(2020,9,27)) # 显然日期print(datetime.date.today()) # 返回今天的日期print(datetime.date.today().weekday()) # 返回星期几(0-6)
2.2 time对象
time
类表示时间,与日期无关。
import datetimetime1 = datetime.time()print(time1) # 默认是 00:00:00time2 = datetime.time(hour=8, second=7)print(time2) # 08:00:07
2.3 datetime对象
datetime
类将日期和时间结合起来。
import datetimedt1 = datetime.datetime(year=2018, month=7, day=1, hour=16, minute=10, second=5)print(dt1) # 输出完整的日期和时间today = datetime.datetime.today()print(today) # 返回当前本地时间和日期
2.4 timedelta对象
timedelta
表示两个日期之间的时间差。
import datetimedt1 = datetime.datetime(2018,7,1,4,15,10)dt2 = dt1 + datetime.timedelta(weeks=-2)print(dt1 - dt2) # 返回相差的天数
2.5 tzinfo对象
tzinfo
类提供时区信息,可以用于自定义时间。常用的方法是通过 datetime.timezone
获取 UTC 时区的 tzinfo
实例。
import datetimefrom datetime import tzinfoutc_tz = tzinfo()print(utc_tz)
3. calendar模块
calendar
模块提供了日历相关的方法,可以生成日历表格等。
3.1 isleap函数
判断给定年份是否是闰年。
import calendarprint(calendar.isleap(2000)) # Trueprint(calendar.isleap(2018)) # False
3.2 month函数
生成一个星期的日历表格,每行包含7天。
print(calendar.month(2018,7)) # 输出一个完整的日历表
3.3 monthrange函数
返回一个包含月份第一天是星期几,以及月份的天数的元组。
print(calendar.monthrange(2018,7)) # (6, 31)
3.4 weekday函数
返回给定日期的星期数。
print(calendar.weekday(2018,7,1)) # 6
4. dateutil库
dateutil
库是 datetime
模块的扩展,提供更高级的日期和时间处理功能。
4.1 安装
通过 conda install python-dateutil
安装。
conda install python-dateutil
4.2 使用
dateutil
提供两个主要模块:parser
和 rrule
。
4.2.1 parser模块
用于解析日期和时间字符串。
from dateutil.parser import parseprint(parse("Sat Oct 11 11:11:11 UTC 2003"))
4.2.2 rrule模块
用于生成重复的时间规则。
import dateutilfrom dateutil.rrule import rrulefrom datetime import datetimestart_date = datetime(2011,8,1)l = list(rrule(freq=MONTHLY,count=4,dtstart=start_date))print(l)
通过以上方法,可以全面利用 Python 的时间和日期处理功能,完成开发中的时间相关需求。
发表评论
最新留言
关于作者
