在 Python 中,处理日期和时间经常会用到 datetime 模块,但当我们从中获取数据时,默认返回的是 datetime 对象,而不是字符串格式。为了更便捷地显示、操作或传输数据,我们可以使用 strftime() 方法将 datetime 对象转换为自定义的字符串格式。本文将带你深入了解 strftime() 的使用,并详细介绍多种格式代码。

datetime 对象如何转字符串?

首先,让我们看一个将当前年、月、日和时间打印到控制台的示例:

from datetime import datetime

current_day = datetime.now()

print(current_day)
# 2023-01-17 21:50:24.524022

print(type(current_day))
# <class 'datetime.datetime'>

在这个例子中,datetime.now() 返回一个包含当前日期和时间信息的 datetime 对象,结果会显示成类似 2023-01-17 21:50:24.524022 这样的完整时间戳。如果我们希望显示年、月、日等数据,就需要用到 strftime() 方法,这个方法支持使用多种格式代码来自定义输出格式。

相关阅读推荐:如何在 Python 中将字符串转换为 datetime 和 struct_time 对象?

Python strftime() 的作用是什么?

strftime()datetime 对象的一个方法,通过接受格式化代码,将日期和时间转换为字符串。以下是一个简单的例子:

from datetime import datetime

current_day = datetime.now()

year = current_day.strftime("%Y")
print("当前年份:", year)
# 当前年份: 2023

print(type(year))
# <class 'str'>

在这个示例中,current_day.strftime("%Y") 返回当前年份的字符串形式,其中 %Y 代表四位数年份格式。使用 strftime() 方法后,数据类型已从 datetime 对象转换为字符串。我们可以灵活使用格式代码,显示我们想要的任何日期和时间信息。

strftime() 的格式代码

除了 %Y 代表年份,strftime() 提供了丰富的格式代码选项。以下示例展示了几种常用代码:

from datetime import datetime

current_day = datetime.now()

year = current_day.strftime("%Y")
print("当前年份:", year)
# 当前年份: 2023

month = current_day.strftime("%B")
print("当前月份:", month)
# 当前月份: January

day = current_day.strftime("%A")
print("当前星期几:", day)
# 当前星期几: Tuesday

time = current_day.strftime("%I %p")
print("当前时间:", time)
# 当前时间: 9 PM

这里 %B%A 分别代表月份名称和星期几,而 %I %p 代表 12 小时制和上下午标识。

常见的 strftime() 格式代码一览

格式代码描述示例
%Y四位数年份2023
%m两位数月份01-12
%B月份名称January
%d两位数的日期01-31
%A星期几Monday
%I12 小时制01-12
%H24 小时制00-23
%pAM/PM 标识AM 或 PM
%M分钟00-59
%S00-59

想了解更多格式代码?可以查阅 Python 官方文档中的 strftime 格式代码

如何反向操作:strptime() 的用法

在处理日期字符串时,我们还可能需要将字符串转回 datetime 对象,这时可以使用 strptime()。例如,将字符串“2023-01-17”转为 datetime 对象:

from datetime import datetime

date_str = "2023-01-17"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")

print(date_obj)
# 2023-01-17 00:00:00
print(type(date_obj))
# <class 'datetime.datetime'>

在这个例子中,strptime() 方法根据指定的格式代码%Y-%m-%d解析日期字符串,返回对应的 datetime 对象。

常见问题解答(FAQ)

Python 中如何将 datetime 转换为字符串?

可以使用 strftime() 方法,将 datetime 对象转换为符合指定格式的字符串,例如 current_day.strftime("%Y-%m-%d")

如何将字符串转为 datetime 类型?

strptime() 方法可以将符合格式的字符串转换为 datetime 对象,例如:datetime.strptime("2023-01-17", "%Y-%m-%d")

Python 中如何将 timestamp 转换为 datetime?

可以使用 datetime.fromtimestamp(),例如 datetime.fromtimestamp(1673961224),将 timestamp 转为 datetime

Python 中如何格式化时间戳?

可以使用 strftime() 格式化 datetime 对象,也可以结合 fromtimestamp() 方法来格式化 timestamp。

总结

在本文中,我们详细讨论了 strftime() 的功能及其在 datetime 对象转换为字符串格式方面的应用。同时还介绍了 strptime() 方法,用于将字符串解析为 datetime 对象。

通过使用 strftime()strptime(),你可以灵活地在日期、时间和字符串之间进行转换,从而使得 Python 中的时间处理更加高效。希望这篇文章能帮你在开发中更自如地操作时间数据,快乐编程!


也可以看看