掌握 Python strftime():将日期和时间转换为可读字符串
Python strftime() 方法详解
本文将通过示例教你如何使用 strftime() 方法将 date、time 和 datetime 对象转换为对应的字符串格式。
视频:Python 中的日期和时间处理
strftime() 方法根据 date、time 或 datetime 对象返回一个表示日期和时间的字符串。
示例 1:使用 strftime() 将 datetime 对象转为字符串
下面的程序演示如何将包含当前日期和时间的 datetime 对象转换为不同的字符串格式。
from datetime import datetime
now = datetime.now() # 获取当前日期和时间
year = now.strftime("%Y")
print("年份:", year)
month = now.strftime("%m")
print("月份:", month)
day = now.strftime("%d")
print("日期:", day)
time = now.strftime("%H:%M:%S")
print("时间:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("日期和时间:", date_time)
运行程序后,输出类似如下:
年份: 2018 月份: 12 日期: 24 时间: 04:59:31 日期和时间: 12/24/2018, 04:59:31
这里,year、month、day、time 和 date_time 都是字符串,而 now 是一个 datetime 对象。
strftime() 的工作原理
在上述程序中,%Y、%m、%d 等称为格式代码。strftime() 方法接受一个或多个格式代码作为参数,并根据这些代码返回格式化后的字符串。
- 我们从
datetime模块导入了datetime类。因为只有datetime类的对象才能调用strftime()方法。 datetime对象包含当前日期和时间,存储在 now 变量中。strftime()方法可用于创建格式化字符串。- 传递给
strftime()的字符串可以包含多个格式代码。
示例 2:从时间戳创建字符串
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("日期时间对象:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("输出 2:", d)
d = date_time.strftime("%d %b, %Y")
print("输出 3:", d)
d = date_time.strftime("%d %B, %Y")
print("输出 4:", d)
d = date_time.strftime("%I%p")
print("输出 5:", d)
运行程序后,输出如下:
日期时间对象: 2018-06-12 09:55:22 输出 2: 06/12/2018, 09:55:22 输出 3: 12 Jun, 2018 输出 4: 12 June, 2018 输出 5: 09AM
格式代码完整列表
下表列出了所有可以传递给 strftime() 方法的格式代码:
| 指令 | 含义 | 示例 |
|---|---|---|
%a | 星期名称缩写 | Sun, Mon, ... |
%A | 完整星期名称 | Sunday, Monday, ... |
%w | 星期几的十进制数 (0-6) | 0, 1, ..., 6 |
%d | 月份中的第几天 (零填充) | 01, 02, ..., 31 |
%-d | 月份中的第几天 (无填充) | 1, 2, ..., 30 |
%b | 月份名称缩写 | Jan, Feb, ..., Dec |
%B | 完整月份名称 | January, February, ... |
%m | 月份数字 (零填充) | 01, 02, ..., 12 |
%-m | 月份数字 (无填充) | 1, 2, ..., 12 |
%y | 不带世纪的年份 (零填充) | 00, 01, ..., 99 |
%-y | 不带世纪的年份 (无填充) | 0, 1, ..., 99 |
%Y | 带世纪的年份 | 2013, 2019 等 |
%H | 小时 (24 小时制, 零填充) | 00, 01, ..., 23 |
%-H | 小时 (24 小时制, 无填充) | 0, 1, ..., 23 |
%I | 小时 (12 小时制, 零填充) | 01, 02, ..., 12 |
%-I | 小时 (12 小时制, 无填充) | 1, 2, ..., 12 |
%p | 本地化的 AM 或 PM | AM, PM |
%M | 分钟 (零填充) | 00, 01, ..., 59 |
%-M | 分钟 (无填充) | 0, 1, ..., 59 |
%S | 秒 (零填充) | 00, 01, ..., 59 |
%-S | 秒 (无填充) | 0, 1, ..., 59 |
%f | 微秒 (左侧零填充) | 000000 - 999999 |
%z | UTC 偏移量 (+HHMM 或 -HHMM) | |
%Z | 时区名称 | |
%j | 一年中的第几天 (零填充) | 001, 002, ..., 366 |
%-j | 一年中的第几天 (无填充) | 1, 2, ..., 366 |
%U | 周数 (周日为一周的第一天) | 00, 01, ..., 53 |
%W | 周数 (周一为一周的第一天) | 00, 01, ..., 53 |
%c | 本地化的日期时间表示 | Mon Sep 30 07:06:05 2013 |
%x | 本地化的日期表示 | 09/30/13 |
%X | 本地化的时间表示 | 07:06:05 |
%% | 字面上的 '%' 字符 | % |
示例 3:本地化的日期和时间表示
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("输出 1:", d)
d = date_time.strftime("%x")
print("输出 2:", d)
d = date_time.strftime("%X")
print("输出 3:", d)
运行程序后,输出如下:
输出 1: Tue Jun 12 09:55:22 2018 输出 2: 06/12/18 输出 3: 09:55:22
格式代码 %c、%x 和 %X 用于获取本地化的日期和时间表示。
推荐阅读:Python strptime() —— strptime() 方法可以从字符串创建 datetime 对象。
Python
- Python关键字与标识符:掌握保留字与命名规范
- 精通Python数据类型:实战指南
- 精通Python运算符:全面指南
- 精通Python Pass语句:实战指南
- 精通Python函数参数:位置、关键字与默认参数
- 精通 Python 字典:创建、操作与进阶技巧
- 精通 Python 迭代器:工作原理与自定义构建
- Python 闭包详解:嵌套函数如何捕获变量
- Python 正则表达式 (re 模块) 实战指南
- 精通 Python datetime:日期、时间与时区实战指南
- 精通 Python time 模块:函数、结构体与实战示例
- 精通 Python time.sleep():最佳实践、多线程与实战案例