百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Python时间模块格式代码指南(python日期模块)

wptr33 2025-03-29 23:05 17 浏览

一、核心格式代码表

格式代码

描述

示例输出

%Y

四位数年份

2024

%y

两位数年份(00-99)

24

%m

补零月份(01-12)

06

%d

补零日期(01-31)

01

%H

24小时制补零小时(00-23)

14

%I

12小时制补零小时(01-12)

02

%M

补零分钟(00-59)

05

%S

补零秒(00-59)

09

%f

微秒(000000-999999)

123456

%z

UTC偏移(±HHMM[SS])

+0800 或 +08:00*

%Z

时区名称

CST

%A

星期全名

Monday

%a

星期缩写

Mon

%B

月份全名

June

%b

月份缩写

Jun

%j

年中的第几天(001-366)

123

%p

AM/PM(大写)

AM 或 PM

%Z

时区名称

CST

%z

UTC偏移(±HHMM)

+0800

%U

年中的周数(周日为一周开始)

22

%W

年中的周数(周一为一周开始)

22

%w

星期几(0=周日)

1 (周一)

%c

本地日期时间表示

Mon Jun 1 14:05:09 2024

%C

本世纪

20

%x

本地日期表示

06/01/24

%X

本地时间表示

14:05:09

二、代码示例

1. strftime 格式化(时间 → 字符串)

from datetime import datetime
now = datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S.%f") 
print(formatted) # 输出:2024-06-01 14:05:09.123456
weekday = now.strftime("今天是%A,本月是%B")
print(weekday) # 输出:今天是Saturday,本月是June

2. strptime 解析(字符串 → 时间)

date_str = "2024年06月01日 14:30"
dt = datetime.strptime(date_str, "%Y年%m月%d日 %H:%M")
print(dt) # 输出:2024-06-01 14:30:00
iso_str = "2024-06-01T14:30:45+08:00"
dt_utc = datetime.strptime(iso_str, "%Y-%m-%dT%H:%M:%S%z")
print(dt_utc) # 输出:2024-06-01 14:30:45+08:00

三、特殊场景处理

1.格式化日期时间

from datetime import datetime
now = datetime.now()
# 完整日期时间
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2023-01-01 12:00:00
# 带星期和月份名称
print(now.strftime("%A, %B %d, %Y")) # Monday, January 01, 2023
# 带AM/PM
print(now.strftime("%I:%M %p")) # 12:00 PM
# 带时区
print(now.strftime("%Y-%m-%d %H:%M:%S %Z")) # 2023-01-01 12:00:00 UTC

2.解析日期时间

from datetime import datetime
# 从字符串解析日期时间
dt_str = "2023-01-01 12:00:00"
dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
print(dt) # 2023-01-01 12:00:00
# 解析带星期和月份名称的字符串
dt_str = "Monday, January 01, 2023"
dt = datetime.strptime(dt_str, "%A, %B %d, %Y")
print(dt) # 2023-01-01 00:00:00

3.毫秒/微秒处理

# 包含微秒的格式
micro_str = datetime.now().strftime("%Y%m%d_%H%M%S_%f")
print(micro_str) # 输出:20240601_140530_123456
# 仅保留毫秒
millis_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
print(millis_str) # 输出:2024-06-01 14:05:30.123

4. 时区格式化

from datetime import datetime, timezone
# 带时区的时间
utc_time = datetime.now(timezone.utc)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S %Z")) # 输出:2024-06-01 06:05:30 UTC
# 转换时区显示
bj_time = utc_time.astimezone(timezone(timedelta(hours=8)))
print(bj_time.strftime("%Y-%m-%d %H:%M:%S %z")) # 输出:2024-06-01 14:05:30 +0800

四、注意事项

  1. 平台差异
%Z 在 Windows 上可能返回空字符串%c 在不同地区的输出格式不同
  1. 错误处理
try:
datetime.strptime("2024/13/01", "%Y/%m/%d")
except ValueError as e:
print(f"解析错误: {e}") # 输出:month must be in 1..12
  1. 性能优化
# 预编译格式(高频调用场景)
from datetime import datetime
ISO_FORMAT = "%Y-%m-%dT%H:%M:%S%z"
dt = datetime.strptime("2024-06-01T14:30:45+0800", ISO_FORMAT)
  1. ISO 8601格式
from datetime import datetime
dt = datetime(2024, 7, 9, 15, 30, 45, 123456)
print(dt.isoformat()) # 输出:2024-07-09T15:30:45.123456
# 对应格式化字符串
fmt = "%Y-%m-%dT%H:%M:%S.%f"
  1. 带时区解析(Python 3.7+)
# 解析带冒号的时区偏移
dt_str = "2024-01-23 15:30+08:00"
dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M%z")

五、常用格式模板

场景

格式字符串

示例输出

日志文件名

"%Y%m%d_%H%M%S"

20240601_143045

文件命名

%Y%m%d_%H%M%S

20240123_153045

中文日期

%Y年%m月%d日

2024年01月23日

12小时制时间

%I:%M:%S %p

03:30:45 PM

周数显示

第%W周(%Y年)

第04周(2024年)

数据库存储

"%Y-%m-%d %H:%M:%S.%f"

2024-06-01 14:30:45.123456

HTTP头日期

"%a, %d %b %Y %H:%M:%S GMT"

Sat, 01 Jun 2024 06:30:45 GMT

用户友好显示

"%Y年%m月%d日 %H:%M"

2024年06月01日 14:30

完整日期时间

%A, %B %d, %Y %I:%M %p

Tuesday, January 23, 2024 03:30 PM

六、平台差异注意

符号

Windows支持

Linux/macOS支持

注意事项

%z

Python 3.7+

Python 3.3+

解析+08:00需Python 3.7+

%Z

有限

有限

可能返回空字符串

%c

依赖区域设置

依赖区域设置

不同系统输出格式不同

相关推荐

什么是Java中的继承?如何实现继承?

什么是继承?...

Java 继承与多态:从基础到实战的深度解析

在面向对象编程(OOP)的三大支柱中,继承与多态是构建灵活、可复用代码的核心。无论是日常开发还是框架设计,这两个概念都扮演着至关重要的角色。本文将从基础概念出发,结合实例与图解,带你彻底搞懂Java...

Java基础教程:Java继承概述_java的继承

继承概述假如我们要定义如下类:学生类,老师类和工人类,分析如下。学生类属性:姓名,年龄行为:吃饭,睡觉老师类属性:姓名,年龄,薪水行为:吃饭,睡觉,教书班主任属性:姓名,年龄,薪水行为:吃饭,睡觉,管...

java4个技巧:从继承和覆盖,到最终的类和方法

日复一日,我们编写的大多数Java只使用了该语言全套功能的一小部分。我们实例化的每个流以及我们在实例变量前面加上的每个@Autowired注解都足以完成我们的大部分目标。然而,有些时候,我们必须求助于...

java:举例说明继承的概念_java继承的理解

在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,...

从零开始构建一款开源的 Vibe Coding 产品 Week1Day4:业界调研之 Agent 横向对比

前情回顾前面两天我们重点调研了了一下Cursor的原理和Cursor中一个关键的工具edit_file的实现,但是其他CodingAgent也需要稍微摸一下底,看看有没有优秀之处,下...

学会这几个插件,让你的Notepad++使用起来更丝滑

搞程序开发的小伙伴相信对Notepad++都不会陌生,是一个占用空间少、打开启动快的文件编辑器,很多程序员喜欢使用Notepad++进行纯文本编辑或者脚本开发,但是Notepad++的功能绝不止于此,...

将 node_modules 目录放入 Git 仓库的优点

推荐一篇文章Whyyoushouldcheck-inyournodedependencies[1]...

再度加码AI编程,腾讯发布AI CLI并宣布CodeBuddy IDE开启公测

“再熬一年,90%的程序员可能再也用不着写for循环。”凌晨两点半,王工还在公司敲键盘。他手里那份需求文档写了足足六页,产品经理反复改了三次。放在过去,光数据库建表、接口对接、单元测试就得写两三天。现...

git 如何查看stash的内容_git查看ssh key

1.查看Stash列表首先,使用gitstashlist查看所有已保存的stash:...

6万星+ Git命令懒人必备!lazygit 终端UI神器,效率翻倍超顺手!

项目概览lazygit是一个基于终端的Git命令可视化工具,通过简易的TUI(文本用户界面)提升Git操作效率。开发者无需记忆复杂命令,即可完成分支管理、提交、合并等操作。...

《Gemini CLI 实战系列》(一)Gemini CLI 入门:AI 上命令行的第一步

谷歌的Gemini模型最近热度很高,而它的...

deepin IDE新版发布:支持玲珑构建、增强AI智能化

IT之家8月7日消息,深度操作系统官方公众号昨日(8月6日)发布博文,更新推出新版deepin集成开发环境(IDE),重点支持玲珑构建。支持玲珑构建deepinIDE在本次重磅更...

狂揽82.7k的star,这款开源可视化神器,轻松创建流程图和图表

再不用Mermaid,你的技术文档可能已经在悄悄“腐烂”——图表版本对不上、同事改完没同步、评审会上被一句“这图哪来的”问得哑口无言。这不是危言耸听。GitHub2025年开发者报告显示,63%的新仓...

《Gemini CLI 实战系列》(五)打造专属命令行工具箱

在前几篇文章中,我们介绍了GeminiCLI的基础用法、效率提升、文件处理和与外部工具结合。今天我们进入第五篇...