当前位置:首页 > Python > 正文

Python日期格式转换完全指南 | 字符串转日期对象教程

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中的任何日期处理需求。

发表评论