1. 首页
  2. 技术文章

47、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对象。

在上面的示例中:

strptime()如何在Python中工作?

 

这里,

  • %d-代表一个月中的某天。示例: 01,02,…,31
  • %B-月份的全名。例如:一月,二月等
  • %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 语言环境的上午或下午。 上午下午
%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 语言环境的适当日期和时间表示。 2013年9月30日星期一07:06:05
%x 语言环境的适当日期表示形式。 13/9/30
%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'
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code