Python中将datetime对象转换为字符串主要使用strftime()方法,通过格式代码如%Y、%m、%d等控制输出样式,例如now.strftime("%Y-%m-%d %H:%M:%S")可生成标准时间字符串。

Python中,将
datetime
datetime
strftime()
在Python里,我们处理日期和时间,通常会用到内置的
datetime
datetime
2023-10-27 10:30:00.123456
这个转换过程的核心,就是
strftime()
%
datetime
%Y
%m
%d
%H
%m
%S
我们来看一个最基础的例子:
立即学习“Python免费学习笔记(深入)”;
from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
print(f"原始datetime对象: {now}")
# 格式化为常见的“年-月-日 时:分:秒”格式
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"格式化后的字符串 (标准): {formatted_date}")
# 尝试另一种更口语化的格式
another_format = now.strftime("今天是%Y年%m月%d日,现在是%H点%M分。")
print(f"格式化后的字符串 (口语化): {another_format}")
# 甚至可以只提取日期或时间
just_date = now.strftime("%Y/%m/%d")
just_time = now.strftime("%I:%M %p") # 12小时制带AM/PM
print(f"仅日期: {just_date}")
print(f"仅时间: {just_time}")你会发现,
strftime()
要真正玩转
strftime()
下面我整理了一些我在实际开发中用得最多,也是最实用的格式代码,并附上简单的解释和示例:
%Y
%Y
%m
%B
%B
%d
%j
%A
%A
%w
%H
%I
%p
%m
%S
%f
%Z
%Z
%c
%x
%x
from datetime import datetime
current_time = datetime(2023, 10, 27, 10, 30, 5, 123456)
print(f"完整日期时间: {current_time.strftime('%Y-%m-%d %H:%M:%S.%f')}")
print(f"短日期格式: {current_time.strftime('%y/%m/%d')}")
print(f"带星期和月份全称: {current_time.strftime('%A, %B %d, %Y')}")
print(f"12小时制带AM/PM: {current_time.strftime('%I:%M:%S %p')}")
print(f"一年中的第几天: {current_time.strftime('一年中的第%j天')}")
print(f"本地化日期时间: {current_time.strftime('%c')}")在实际使用中,我通常会先在交互式Python环境里试验一下,看看哪个格式代码组合能得到我想要的结果。这比查文档效率高多了,也更直观。
既然我们能把
datetime
datetime
datetime.strptime()
strftime()
strptime()
ValueError
from datetime import datetime
# 一个我们之前格式化过的字符串
date_string_1 = "2023-10-27 10:30:05"
# 对应的格式字符串
format_string_1 = "%Y-%m-%d %H:%M:%S"
parsed_datetime_1 = datetime.strptime(date_string_1, format_string_1)
print(f"解析后的datetime对象 (标准): {parsed_datetime_1}")
# 另一个字符串,格式略有不同
date_string_2 = "Oct 27, 2023 10:30 AM"
format_string_2 = "%b %d, %Y %I:%M %p"
parsed_datetime_2 = datetime.strptime(date_string_2, format_string_2)
print(f"解析后的datetime对象 (自定义): {parsed_datetime_2}")
# 尝试一个错误的格式,看看会发生什么
date_string_3 = "2023/10/27"
wrong_format_3 = "%Y-%m-%d" # 注意这里是'-',而字符串是'/'
try:
datetime.strptime(date_string_3, wrong_format_3)
except ValueError as e:
print(f"解析失败示例: {e}")你会看到,
strptime()
如果你的日期时间字符串格式不固定,或者你不想为每一种可能的格式都写一个
strptime()
dateutil
pip install python-dateutil
parser.parse()
在日期时间格式化的过程中,有一些小细节如果不注意,可能会导致意想不到的问题。作为过来人,我总结了一些常见的陷阱和一些能提升效率的小技巧。
格式代码的精确匹配(尤其是在strptime
%Y
%Y
%H
%I
%m
%B
2023-10-27
%Y-%m-%d
%Y-%m-%d
strftime
strptime
本地化(Locale)的影响
%A
%A
%B
%B
%c
%x
%x
%A
import locale
from datetime import datetime
now = datetime.now()
# 默认Locale下的输出
print(f"默认Locale: {now.strftime('%A, %B %d, %Y')}")
# 尝试设置为中文Locale(可能需要系统支持)
try:
locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
print(f"中文Locale: {now.strftime('%A, %B %d, %Y')}")
except locale.Error:
print("警告: 无法设置中文Locale,请确保系统支持。")
# 恢复默认Locale
locale.setlocale(locale.LC_ALL, '')这个 Locale 问题在跨国部署或多语言应用中尤其重要。
时区(Timezone)的困惑
datetime
datetime
datetime
strftime('%Z')('%z')pytz
zoneinfo
datetime
from datetime import datetime
import pytz # 需要 pip install pytz
# 天真datetime对象
naive_dt = datetime(2023, 10, 27, 10, 30, 0)
print(f"天真对象时区信息: {naive_dt.strftime('%Y-%m-%d %H:%M:%S %Z %z')}") # %Z和%z可能为空或默认
# 感知datetime对象 (例如,设置为纽约时区)
ny_tz = pytz.timezone('America/New_York')
aware_dt = ny_tz.localize(naive_dt)
print(f"感知对象时区信息: {aware_dt.strftime('%Y-%m-%d %H:%M:%S %Z %z')}")
# 转换为UTC
utc_dt = aware_dt.astimezone(pytz.utc)
print(f"UTC时间: {utc_dt.strftime('%Y-%m-%d %H:%M:%S %Z %z')}")处理时区是个大话题,但至少要知道
strftime
datetime
微秒(%f
%f
int(datetime_object.microsecond / 1000)
性能考虑(通常不必过度优化) 对于大多数应用来说,
strftime()
strftime
strftime
总的来说,
strftime()
strptime()
以上就是python如何将日期格式化为字符串_python datetime对象格式化输出指南的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号