该strptime()方法从给定的字符串创建一个日期时间对象。
注意:您不能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 = 2018 年 6 月 21 日 date_string 的类型 =
strptime() 如何工作?
本strptime()类方法有两个参数:
- 字符串(转换为日期时间)
- 格式代码
根据使用的字符串和格式代码,该方法返回其等效datetime对象。
在上面的例子中:
这里,
- %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 | 语言环境的 AM 或 PM。 | 上午下午 |
%M | 分钟作为用零填充的十进制数。 | 00, 01, …, 59 |
%-M | 分钟作为十进制数。 | 0, 1, …, 59 |
%S | 第二个是用零填充的十进制数。 | 00, 01, …, 59 |
%-S | 第二个是十进制数。 | 0, 1, …, 59 |
%f | 微秒为十进制数,左侧补零。 | 000000 - 999999 |
%z | +HHMM 或 -HHMM 形式的 UTC 偏移量。 | |
%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() 中的值错误
如果传递给 的字符串(第一个参数)和格式代码(第二个参数)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: 时间数据“12/11/2018”与格式“%d %m %Y”不匹配
推荐阅读: Python strftime()