跳到主要内容

Python strptime() 函数

提示
  1. 字符串转换为datetime对象:Python的strptime()方法可以将特定格式的字符串转换为datetime对象,例如 "21 June, 2018"。
  2. 格式化代码的重要性strptime()方法需要字符串和格式代码完全匹配,例如"%d %B, %Y",以确保正确转换。
  3. 错误处理:如果字符串与指定的格式代码不匹配,strptime()方法会抛出ValueError,提示格式不一致。

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

注意:并不是每个字符串都能创建datetime对象。字符串需要符合特定的格式。

示例1:字符串转换为datetime对象


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)
  • 格式代码

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

在上述示例中:

Python strptime

这里,

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

示例2:字符串转换为datetime对象


from datetime import datetime

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

# 假设日期格式为dd/mm/yyyy
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# 假设日期格式为mm/dd/yyyy
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缩写的星期几名称Sun, Mon, ...
%A完整的星期几名称Sunday, Monday, ...
%w十进制表示的星期几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 等
%H24小时制小时数,前导零的十进制数00, 01, ..., 23
%-H24小时制小时数,十进制数0, 1, ..., 23
%I12小时制小时数,前导零的十进制数01, 02, ..., 12
%-I12小时制小时数,十进制数1, 2, ... 12
%p本地AM或PMAM, PM
%M分钟,前导零的十进制数00, 01, ..., 59
%-M分钟,十进制数0, 1, ..., 59
%S秒数,前导零的十进制数00, 01, ..., 59
%-S秒数,十进制数0, 1, ..., 59
%f微秒,左侧零填充的十进制数000000 - 999999
%zUTC偏移量,格式为+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
%%字面上的'%'字符%

在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 strftime()