6. Python 标准库
6.2 datetime 与 time 模块
Python 提供了两个强大的模块来处理日期和时间:datetime 和 time。这两个模块在 Python 标准库中非常常用,尤其是在需要处理时间戳、日期计算、时间格式化等场景时。本节将详细介绍这两个模块的功能和使用方法。
6.2.1 datetime 模块
datetime 模块是 Python 中处理日期和时间的主要模块。它提供了多个类来表示日期、时间、日期时间、时间差等。
1. date 类
date 类用于表示日期(年、月、日)。常用的方法包括:
date.today():获取当前日期。date(year, month, day):创建一个日期对象。date.strftime(format):将日期格式化为字符串。
from datetime import date
# 获取当前日期
today = date.today()
print("Today's date:", today)
# 创建指定日期
specific_date = date(2023, 10, 1)
print("Specific date:", specific_date)
# 格式化日期
formatted_date = specific_date.strftime("%Y-%m-%d")
print("Formatted date:", formatted_date)
2. time 类
time 类用于表示时间(时、分、秒、微秒)。常用的方法包括:
time(hour, minute, second, microsecond):创建一个时间对象。time.strftime(format):将时间格式化为字符串。
from datetime import time
# 创建时间对象
t = time(14, 30, 45)
print("Time:", t)
# 格式化时间
formatted_time = t.strftime("%H:%M:%S")
print("Formatted time:", formatted_time)
3. datetime 类
datetime 类是 date 和 time 的结合体,用于表示日期和时间。常用的方法包括:
datetime.now():获取当前日期和时间。datetime(year, month, day, hour, minute, second):创建一个日期时间对象。datetime.strftime(format):将日期时间格式化为字符串。
from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
print("Current datetime:", now)
# 创建指定日期时间
specific_datetime = datetime(2023, 10, 1, 14, 30, 45)
print("Specific datetime:", specific_datetime)
# 格式化日期时间
formatted_datetime = specific_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("Formatted datetime:", formatted_datetime)
4. timedelta 类
timedelta 类用于表示时间差,常用于日期和时间的加减操作。
from datetime import timedelta
# 创建一个时间差
delta = timedelta(days=5, hours=3)
# 计算未来日期
future_date = datetime.now() + delta
print("Future date:", future_date)
6.2.2 time 模块
time 模块提供了与时间相关的底层操作,通常用于处理时间戳、睡眠等任务。
1. 时间戳
时间戳是从 1970 年 1 月 1 日(UTC)开始的秒数。time 模块提供了以下函数:
time.time():获取当前时间戳。time.ctime(timestamp):将时间戳转换为可读的字符串。
import time
# 获取当前时间戳
timestamp = time.time()
print("Current timestamp:", timestamp)
# 将时间戳转换为可读字符串
readable_time = time.ctime(timestamp)
print("Readable time:", readable_time)
2. 时间格式化
time 模块支持将时间格式化为字符串,类似于 datetime 模块的 strftime 方法。
import time
# 格式化当前时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("Formatted time:", formatted_time)
3. 睡眠
time.sleep(seconds) 函数用于让程序暂停指定的秒数。
import time
print("Start sleeping...")
time.sleep(5) # 暂停 5 秒
print("Wake up!")
6.2.3 datetime 与 time 模块的比较
| 特性 | datetime 模块 | time 模块 |
|---|---|---|
| 主要用途 | 处理日期和时间,支持日期计算和格式化 | 处理时间戳、睡眠等底层操作 |
| 时间表示 | 使用 date、time、datetime 类 | 使用时间戳或结构化时间 |
| 格式化 | 支持 strftime 和 strptime | 支持 strftime 和 strptime |
| 时间差计算 | 支持 timedelta 类 | 不支持直接的时间差计算 |
| 适用场景 | 日期时间操作、日历应用 | 时间戳操作、性能测试、定时任务 |
6.2.4 实际应用示例
1. 计算两个日期之间的天数
from datetime import date
date1 = date(2023, 10, 1)
date2 = date(2023, 10, 10)
delta = date2 - date1
print("Days between dates:", delta.days)
2. 定时任务
import time
def task():
print("Task executed at:", time.ctime())
while True:
task()
time.sleep(10) # 每 10 秒执行一次
通过本节的学习,您应该能够熟练使用 datetime 和 time 模块来处理日期和时间相关的任务。这两个模块是 Python 标准库中不可或缺的工具,掌握它们将极大地提升您的编程效率。
