Python怎么将当前时间格式化为年月日时分秒字符串

咖啡半糖
咖啡半糖
发布时间:2026-10-31| 6人浏览过
原创

详细讲解在Python中使用datetime模块将当前时间格式化为年月日时分秒字符串的完整方法、执行流程、常用占位符对照及中文格式跨平台处理方案。

Python 标准库 datetime 模块 适用版本:Python 3.x 格式目标:YYYY-MM-DD HH:mm:ss
Python怎么将当前时间格式化为年月日时分秒字符串
概览图:Python 格式化当前时间核心调用与输出结果
在 Python 中,将当前系统时间转换为“年月日时分秒”字符串最直接的方法是使用标准库内置的 datetime 模块:调用 datetime.now() 取得当前时间对象,随后执行 .strftime('%Y-%m-%d %H:%M:%S') 即可得到形如 2026-10-29 23:58:12 的标准时间字符串。

一、核心解决方案:两行代码完成格式化

处理时间字符串无需安装任何第三方库。Python 核心库中自带的 datetime 类提供了从时间读取到文本格式化的一整套 API。以下是完整的可运行代码:

from datetime import datetime

# 1. 获取当前系统时间(datetime 对象)
now = datetime.now()

# 2. 将时间对象格式化为指定的年月日时分秒字符串
time_str = now.strftime('%Y-%m-%d %H:%M:%S')

print(time_str)
控制台输出示例
2026-10-29 23:58:12

在这个过程中,变量 now 是一个 datetime.datetime 类的实例,保存了当前的年、月、日、时、分、秒及微秒数值;而 strftime 是“string format time”(字符串格式化时间)的缩写,它根据传入的格式指令将时间对象各个字段解析并拼接为纯文本字符串。

二、关键执行步骤拆解

从操作系统底层时间到最终业务字符串,Python 内部经历了三个主要阶段。理解这个流转过程有助于排查格式化错误与时区偏差:

Python怎么将当前时间格式化为年月日时分秒字符串
图 1:从 Python 导入到最终输出字符串的完整执行流程
  1. 引入类定义:注意导入语句是 from datetime import datetime。datetime 模块内包含一个同名的类 datetime。如果写成 import datetime,后续必须使用 datetime.datetime.now() 调用。
  2. 获取本地瞬时:datetime.now() 读取当前操作系统的本地时钟。它默认返回一个不包含时区信息(Naive)的时间对象。
  3. 执行占位符替换:strftime 扫描传入的字符串模板,将以 % 开头的占位符转换为具体数字,非占位符部分(如 -、: 和空格)原样保留。

三、占位符语法与时间分量对照

在 '%Y-%m-%d %H:%M:%S' 中,每一个字母代表不同层级的时间维度。大小写严格敏感,一旦写错字母大小写,得到的结果完全不同:

Python怎么将当前时间格式化为年月日时分秒字符串
图 2:时间字符串各组成部分与格式占位符的精准对应关系
占位符 含义说明 数值范围 / 示例 特别说明与常见误区
%Y 四位完整年份 2026 大写 Y。若使用小写 %y 则只输出后两位(例如 26)。
%m 月份(前导补零) 01 ~ 12 小写 m。千万不要写成大写 %M(大写代表分钟)。
%d 日期(前导补零) 01 ~ 31 小写 d。若为单数字会自动补 0(如 9 日显示为 09)。
%H 小时(24小时制) 00 ~ 23 大写 H。如果需要 12 小时制请使用 %I。
%M 分钟(前导补零) 00 ~ 59 大写 M。必须与小写 %m(月份)区分开。
%S 秒数(前导补零) 00 ~ 59 大写 S。在润秒时可能出现 60。
%f 微秒数(6位数字) 000000 ~ 999999 用于毫秒/微秒高精度记录场景。

四、实际业务中的常见格式需求

除标准 YYYY-MM-DD HH:mm:ss 形式外,实际开发中常遇到中文展示、日志文件名、高精度毫秒记录等不同需求:

1. 输出中文“年月日时分秒”与跨平台兼容写法

很多初学者会直接编写 now.strftime('%Y年%m月%d日 %H时%M分%S秒')。在 macOS 或 Linux 系统上这段代码可以正常运行,但在 Windows 平台上会直接抛出异常:UnicodeEncodeError: 'locale' codec can't encode character...。这是因为底层 C 运行时库在解析中文字符作为格式控制参数时发生了编码冲突。

推荐采用以下两种既安全又优雅的跨平台写法:

# 推荐方案 A:利用 Python 3.6+ 的 f-string 语法(简洁推荐)
chinese_time = f"{now:%Y}年{now:%m}月{now:%d}日 {now:%H}时{now:%M}分{now:%S}秒"

# 推荐方案 B:先生成占位符再通过 .format 替换
chinese_time_b = now.strftime('%Y{y}%m{m}%d{d} %H{h}%M{i}%S{s}').format(
    y='年', m='月', d='日', h='时', i='分', s='秒'
)

print(chinese_time)
控制台输出示例
2026年10月29日 23时58分12秒

2. 文件名或数据归档的安全格式(无空格无冒号)

在创建日志文件、备份压缩包或导出 Excel 时,文件名中不能包含冒号(:,在 Windows 下为非法字符)以及空格。通常使用下划线连接年月日与时分秒:

# 文件命名常用格式:年月日_时分秒
filename_time = now.strftime('%Y%m%d_%H%M%S')
file_name = f"backup_{filename_time}.tar.gz"

print(file_name)
控制台输出示例
backup_20261029_235812.tar.gz

3. 包含毫秒或微秒的高精度时间戳

在接口日志记录或性能追踪时,通常需要精确到毫秒:

# %f 输出 6 位微秒,切片截取前 3 位即为毫秒
millisecond_time = now.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]

print(millisecond_time)
控制台输出示例
2026-10-29 23:58:12.842

五、时区意识:Naive(无时区)与 Aware(时区感知)

直接调用 datetime.now() 获取的时间是“无时区(Naive)”的,它仅仅读取了宿主操作系统的本地时刻。在单机脚本中这通常没有问题,但在分布式系统、Docker 容器或与数据库交互时,容器的默认时区可能是 UTC(零时区),从而导致输出的时间比北京时间(UTC+8)慢 8 小时。

Python怎么将当前时间格式化为年月日时分秒字符串
图 3:Naive 与 Aware 时间对象的机制差异与适用场景

在生产级代码中,建议明确时区。例如通过 astimezone() 附加当前本地时区,或结合 %z 指令打印时区偏移:

from datetime import datetime

# 获取带有时区感知(Aware)的当前时间
aware_now = datetime.now().astimezone()

# 格式化输出包含时区偏移(例如 +0800)
time_with_tz = aware_now.strftime('%Y-%m-%d %H:%M:%S %z')

print(time_with_tz)
控制台输出示例
2026-10-29 23:58:12 +0800

六、避坑要点与知识速查

总结开发者在格式化时间时最常踩的几类陷阱,供随时查对:

Python怎么将当前时间格式化为年月日时分秒字符串
图 4:Python 时间格式化核心规则与速查避坑卡片
核心记忆口诀:大写的 %Y 是四年(完整年),小写的 %m 属于月份(Month),大写的 %M 代表分钟(Minute),大写的 %H 为 24 小时制。按照 now.strftime('%Y-%m-%d %H:%M:%S') 书写即可满足绝大多数日常开发需求。
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。