简介
对于处理日期、时间戳和与时间相关操作的开发者来说,理解 Python 中的时间格式化至关重要。本教程提供了一份全面的指南,帮助程序员掌握 Python 的时间格式化技术,以便在各种编程场景中高效地处理和操作时间对象。
对于处理日期、时间戳和与时间相关操作的开发者来说,理解 Python 中的时间格式化至关重要。本教程提供了一份全面的指南,帮助程序员掌握 Python 的时间格式化技术,以便在各种编程场景中高效地处理和操作时间对象。
Python 通过各种内置模块提供了强大的时间和日期处理工具。对于从事对时间敏感的应用程序开发的人员来说,理解这些基础知识至关重要。
Python 提供了几个用于时间操作的模块:
| 模块 | 主要用途 | 关键函数 |
|---|---|---|
time |
底层时间操作 | time()、sleep()、localtime() |
datetime |
高级日期和时间操作 | datetime()、date()、timedelta() |
calendar |
与日历相关的操作 | month()、weekday() |
import time
import datetime
## 使用 time 模块
current_timestamp = time.time()
print("当前时间戳:", current_timestamp)
## 使用 datetime 模块
current_datetime = datetime.datetime.now()
print("当前日期和时间:", current_datetime)
关键的时间组件包括:
datetimetimedelta 进行时间计算在学习时间操作时,通过实际场景进行练习以加深理解。LabEx 建议通过动手编码练习来掌握这些概念。
Python 中的时间格式化可让你将日期时间对象转换为人类可读的字符串,并将字符串表示形式解析回日期时间对象。
Python 使用特定的指令进行时间格式化:
| 指令 | 含义 | 示例 |
|---|---|---|
%Y |
四位数字表示的年份 | 2023 |
%m |
月份数字表示 | 01 - 12 |
%d |
月份中的日期 | 01 - 31 |
%H |
小时(24 小时制) | 00 - 23 |
%M |
分钟 | 00 - 59 |
%S |
秒 | 00 - 59 |
from datetime import datetime
## 当前时间
now = datetime.now()
## 格式化为字符串
formatted_time1 = now.strftime("%Y-%m-%d %H:%M:%S")
formatted_time2 = now.strftime("%d/%m/%Y")
print(formatted_time1) ## 2023-06-15 14:30:45
print(formatted_time2) ## 15/06/2023
## 将字符串转换为日期时间
date_string = "15 June, 2023"
parsed_date = datetime.strptime(date_string, "%d %B, %Y")
print(parsed_date)
## 带有星期几和时间的自定义格式
custom_format = now.strftime("%A, %B %d, %Y at %I:%M %p")
print(custom_format) ## Thursday, June 15, 2023 at 02:30 PM
from datetime import datetime, timezone
## UTC 时间
utc_time = datetime.now(timezone.utc)
formatted_utc = utc_time.strftime("%Y-%m-%d %H:%M:%S %Z")
print(formatted_utc)
通过练习不同的格式化场景来熟练掌握。LabEx 建议尝试各种指令以了解其细微差别。
strftime() 进行格式化from datetime import datetime, timedelta
## 基本的时间增量操作
current_time = datetime.now()
future_time = current_time + timedelta(days = 30)
past_time = current_time - timedelta(weeks = 2)
print("当前时间:", current_time)
print("从现在起30天后:", future_time)
print("两周前:", past_time)
## 比较日期
date1 = datetime(2023, 6, 15)
date2 = datetime(2023, 7, 20)
print("date1更早吗?", date1 < date2)
print("时间差:", date2 - date1)
def generate_date_range(start, end, delta):
current = start
while current <= end:
yield current
current += delta
start_date = datetime(2023, 1, 1)
end_date = datetime(2023, 12, 31)
for date in generate_date_range(start_date, end_date, timedelta(days = 30)):
print(date.strftime("%Y-%m-%d"))
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
## 处理不同的时区
local_time = datetime.now()
utc_time = local_time.astimezone(timezone.utc)
tokyo_time = local_time.astimezone(ZoneInfo("Asia/Tokyo"))
print("本地时间:", local_time)
print("UTC时间:", utc_time)
print("东京时间:", tokyo_time)
| 技术 | 描述 | 示例 |
|---|---|---|
| 缓存 | 存储频繁使用的时间计算结果 | @functools.lru_cache |
| 批处理 | 一起处理多个时间操作 | 批量日期时间转换 |
| 延迟求值 | 仅在需要时计算时间 | 基于生成器的时间范围 |
import logging
from datetime import datetime
def create_timestamped_log():
logging.basicConfig(
filename='app.log',
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
logging.warning("应用程序启动")
import schedule
import time
def job():
print("在", datetime.now(), "执行计划任务")
schedule.every(30).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
在处理复杂的时间操作时,LabEx建议使用诸如arrow或pendulum之类的库,以实现更直观的时间操作。
ValueErrortry-except处理解析错误通过探索 Python 的时间格式化功能,开发者可以掌握强大的技能,用于管理日期时间对象、在不同时间表示之间进行转换,以及在应用程序中实现强大的与时间相关的功能。本教程涵盖的技术为 Python 编程中常见的时间格式化挑战提供了实用的解决方案。