Python strptime()

strptime() 方法从给定的字符串创建 datetime 对象。

注意:你不能从所有字符串中创建 datetime 对象。字符串需要采用特定格式。


示例 1:字符串到日期时间对象


from datetime import datetime

date_string = "21 June, 2018"

print("date_string =", date_string)
print("type of date_string =", type(date_string))

date_object = datetime.strptime(date_string, "%d %B, %Y")

print("date_object =", date_object)
print("type of date_object =", type(date_object))

运行程序后,输出将是


date_string = 21 June, 2018
type of date_string = <class 'str'>
date_object = 2018-06-21 00:00:00
type of date_object = <class 'datetime.datetime'>

strptime() 如何工作?

strptime() 类方法接受两个参数

  • 字符串(将转换为日期时间)
  • 格式代码

根据使用的字符串和格式代码,该方法返回其等效的 datetime 对象。

在上面的示例中

Python strptime

这里,

  • %d - 表示月份中的日期。示例: 01, 02, ..., 31
  • %B - 月份的全名。示例: January, February 等
  • %Y - 四位数的年份。示例: 2018, 2019 等

示例 2:字符串到日期时间对象


from datetime import datetime

dt_string = "12/11/2018 09:15:32"

# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

运行程序后,输出将是

dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

格式代码列表

下表显示了所有可以使用的格式代码。

指令 含义 示例
%a 缩写的工作日名称。 周日, 周一, ...
%A 完整的工作日名称。 星期日, 星期一, ...
%w 工作日作为十进制数字。 0, 1, ..., 6
%d 月份中的日期,用零填充的十进制数。 01, 02, ..., 31
%-d 月份中的日期,作为十进制数字。 1, 2, ..., 30
%b 缩写月份名称。 一月, 二月, ..., 十二月
%B 完整月份名称。 一月, 二月, ...
%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。 上午, 下午
%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 一年中的周数(星期日作为一周的第一天)。新年中所有早于第一个星期日的日期都被视为第 0 周。 00, 01, ..., 53
%W 一年中的周数(星期一作为一周的第一天)。新年中所有早于第一个星期一的日期都被视为第 0 周。 00, 01, ..., 53
%c 区域设置的适当日期和时间表示。 Mon Sep 30 07:06:05 2013
%x 区域设置的适当日期表示。 09/30/13
%X 区域设置的适当时间表示。 07:06:05
%% 字面量 '%' 字符。 %

strptime() 中的 ValueError

如果传递给 strptime() 的字符串(第一个参数)和格式代码(第二个参数)不匹配,你将收到 ValueError。例如


from datetime import datetime

date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")

print("date_object =", date_object)

如果你运行这个程序,你会得到一个错误。

ValueError: time data '12/11/2018' does not match format '%d %m %Y'

另请阅读

视频:Python 中的日期和时间

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战