Python strptime()
Python strptime()
在本文中,您将学习从字符串创建日期时间对象(借助示例)。
视频:Python 中的日期和时间
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 = 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
对象。
在上面的例子中:
在这里,
%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 | +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 | 语言环境的适当日期表示。 | 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()
Python