上一篇
Python日期格式转换完全指南 | 字符串转日期对象教程
- Python
- 2025-08-01
- 1727
Python日期格式转换完全指南
深入掌握Python中日期与时间的处理技巧,解决常见日期格式转换问题
为什么需要日期格式转换?
在Python编程中,处理日期和时间是常见的需求。数据可能来自不同来源,格式各异,如:
- 用户输入的日期字符串("2023-08-15", "15/08/2023"等)
- 数据库中的日期时间对象
- API返回的时间戳(如1692096000)
- 日志文件中的日期记录
Python的datetime模块提供了强大的工具来处理这些日期格式的转换。
基础日期转换方法
1. 字符串转日期对象 (strptime)
使用datetime.strptime()
将字符串解析为datetime对象:
from datetime import datetime
# 常见日期字符串格式
date_str1 = "2023-08-15"
date_str2 = "15 August, 2023"
date_str3 = "08/15/2023 14:30"
# 转换为datetime对象
date_obj1 = datetime.strptime(date_str1, "%Y-%m-%d")
date_obj2 = datetime.strptime(date_str2, "%d %B, %Y")
date_obj3 = datetime.strptime(date_str3, "%m/%d/%Y %H:%M")
print(f"转换结果1: {date_obj1}")
print(f"转换结果2: {date_obj2}")
print(f"转换结果3: {date_obj3}")
2. 日期对象转字符串 (strftime)
使用strftime()
将datetime对象格式化为字符串:
from datetime import datetime
now = datetime.now()
# 格式化为不同形式的字符串
fmt1 = now.strftime("%Y-%m-%d") # 2023-08-15
fmt2 = now.strftime("%d/%m/%Y") # 15/08/2023
fmt3 = now.strftime("%A, %B %d, %Y") # Tuesday, August 15, 2023
fmt4 = now.strftime("%Y-%m-%d %H:%M:%S") # 2023-08-15 14:30:45
print(f"格式1: {fmt1}")
print(f"格式2: {fmt2}")
print(f"格式3: {fmt3}")
print(f"格式4: {fmt4}")
时间戳与日期对象的转换
1. 时间戳转日期对象
import time
from datetime import datetime
# 获取当前时间戳
timestamp = time.time()
print(f"当前时间戳: {timestamp}")
# 时间戳转datetime对象
dt_object = datetime.fromtimestamp(timestamp)
print(f"转换结果: {dt_object}")
2. 日期对象转时间戳
from datetime import datetime
import time
# 创建datetime对象
dt = datetime(2023, 8, 15, 14, 30)
# 转换为时间戳
timestamp = dt.timestamp()
print(f"时间戳: {timestamp}")
常用日期格式代码
代码 | 含义 | 示例 |
---|---|---|
%Y | 四位年份 | 2023 |
%m | 月份(01-12) | 08 |
%d | 月内中的一天(01-31) | 15 |
%H | 24小时制小时数(00-23) | 14 |
%M | 分钟数(00-59) | 30 |
%S | 秒(00-59) | 45 |
%A | 星期全称 | Tuesday |
%a | 星期缩写 | Tue |
%B | 月份全称 | August |
高级日期处理技巧
1. 处理时区
from datetime import datetime
import pytz
# 创建带时区的日期对象
utc_time = datetime.now(pytz.utc)
print(f"UTC时间: {utc_time}")
# 转换为上海时区
shanghai_tz = pytz.timezone('Asia/Shanghai')
shanghai_time = utc_time.astimezone(shanghai_tz)
print(f"上海时间: {shanghai_time}")
2. 日期运算
from datetime import datetime, timedelta
now = datetime.now()
# 计算3天后的日期
future_date = now + timedelta(days=3)
print(f"三天后: {future_date}")
# 计算2小时前的时间
past_time = now - timedelta(hours=2)
print(f"两小时前: {past_time}")
# 计算两个日期的差值
date1 = datetime(2023, 8, 15)
date2 = datetime(2023, 8, 20)
delta = date2 - date1
print(f"日期差值: {delta.days}天")
掌握Python日期处理的关键点
理解格式代码
熟记常用的strftime/strptime格式代码
区分时区
处理跨时区应用时使用pytz库
时间戳转换
掌握时间戳与日期对象的转换方法
通过datetime模块的强大功能,你可以轻松解决Python中的任何日期处理需求。
本文由YanRanJie于2025-08-01发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257051.html
发表评论