Python时间函数指南:如何使用datetime和time模块
在Python中,有两个常用的模块可以处理时间和日期。这两个模块分别是datetime和time。它们提供了处理时间和日期的功能,并且提供了各种方法来操作和格式化时间和日期。在本指南中,我们将介绍如何使用这两个模块来管理日期和时间。
1. 什么是时间?
在计算机中,时间是一个从某个时间点开始计算的数字。在Python中,这个时间点是1970年1月1日00:00:00 UTC(协调世界时)。这个时间点被称为epoch。所有时间都以这个时间点为基准计算。
2. datetime模块
datetime模块是Python中处理日期和时间的主要模块。它包含了以下几个类:
- datetime.date:代表一个不带时间的日期(年、月、日)
- datetime.time:代表一个不带日期的时间(小时、分钟、秒、微秒)
- datetime.datetime:代表日期和时间
- datetime.timedelta:代表两个日期或时间之间的差异
2.1 datetime.date类
datetime.date类表示一个不带时间的日期,其构造函数如下:
datetime.date(year, month, day)
其中,year、month、day分别表示年、月、日,取值范围参考下图:

datetime.date类有一些常用的方法,如获取日期的年份、月份和日期:
import datetime today = datetime.date.today() print(today.year) # 2019 print(today.month) # 8 print(today.day) # 16
2.2 datetime.time类
datetime.time类表示一个不带日期的时间,其构造函数如下:
datetime.time(hour, minute, second, microsecond)
其中,hour、minute、second、microsecond分别表示小时、分钟、秒、微秒,取值范围参考下图:

datetime.time类有一些常用的方法,如获取时间的小时、分钟和秒:
import datetime now = datetime.datetime.now().time() print(now.hour) # 14 print(now.minute) # 20 print(now.second) # 58
2.3 datetime.datetime类
datetime.datetime类表示日期和时间,其构造函数如下:
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)
其中,year、month、day、hour、minute、second、microsecond分别表示年、月、日、小时、分钟、秒、微秒。如果不提供hour、minute、second、microsecond参数,则默认为0。
datetime.datetime类有一些常用的方法,如获取日期和时间的字符串表示:
import datetime
now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2019-08-16 14:24:45
strftime()方法使用给定的格式化字符串将datetime对象转换为字符串。%Y、%m、%d、%H、%M、%S是格式化指令,分别表示年、月、日、小时、分钟、秒。
2.4 datetime.timedelta类
datetime.timedelta类表示两个日期或时间之间的差异。它可以用于计算日期和时间的加减运算。其构造函数如下:
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
可以用timedelta对象在datetime对象上进行加减运算,例如计算明天的日期:
import datetime
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
print(tomorrow.strftime("%Y-%m-%d")) # 2019-08-17
3. time模块
time模块是Python中处理时间的另一个模块。它包含了很多函数,用于获取当前时间、格式化时间、等待一段时间等。以下是time模块的一些常用函数:
- time.time():返回从1970年1月1日00:00:00 UTC到当前时间的秒数,也称为Unix时间戳。
- time.sleep(secs):等待指定秒数。
- time.localtime([secs]):将一个Unix时间戳转换为一个struct_time对象,如果不提供时间戳,则默认转换当前时间。
- time.strftime(format[, t]):将struct_time对象转换为指定格式的时间字符串。format是格式化字符串,t是可选的struct_time对象,默认为当前时间。
以下是示例代码:
import time
print(time.time()) # 1565946142.7307458
time.sleep(1)
print("Waited for 1 second.")
t = time.localtime()
print(t) # time.struct_time(tm_year=2019, tm_mon=8, tm_mday=16, tm_hour=22, tm_min=42, tm_sec=24, tm_wday=4, tm_yday=228, tm_isdst=0)
print(time.strftime("%Y-%m-%d %H:%M:%S", t)) # 2019-08-16 22:42:24
4. 总结
datetime模块和time模块提供了很多处理时间和日期的函数和类。使用它们可以轻松地获取当前时间、格式化时间、计算时间差等。熟练掌握这些模块,可以提高我们处理时间和日期的效率。
