上一章Python教程请查看:python3将时间、日期转为字符串
在本文中,你将学习如何从字符串(通过示例)创建datetime对象。
strptime方法的作用是:根据给定的字符串创建一个datetime对象。
注意:你不能从每个字符串创建datetime对象,字符串需要采用某种格式。
例1:字符串转为datetime对象
from datetime import datetime
date_string = "21 June, 2020"
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))
strptime()是如何工作的?strptime()类方法有两个参数:
- 字符串(转换为日期时间)
- 格式的代码
在上面的例子中:
文章图片
在这里,
- %d -表示某月的某一天。例如:01、02、……31岁的
- %B -月份的全名。例如:一月、二月等。
- %Y -年,四位数。例如:2020年、2019年等。
from datetime import datetime
dt_string = "12/11/2020 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)
格式代码列表下表显示了你可以使用的所有格式代码。
代码 | 解释 | 例子 |
%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 etc. |
%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 |
%% | 文字’ %’ 字符。 | % |
from datetime import datetime
date_string = "12/11/2020"
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
如果你运行这个程序,你会得到一个错误。
ValueError: time data '12/11/2020' does not match format '%d %m %Y'
推荐阅读
- 如何在python3中获取当前日期和时间( – Python3教程)
- python3将时间、日期转为字符串(strftime() – Python3教程)
- python3处理时间和日期(datetime模块 – Python3教程)
- python3正则表达式 – Python3教程
- python3 @property的用法 – Python3教程
- python3装饰器decorator – Python3教程
- python3闭包closure – Python3教程
- python3生成器generator – Python3教程
- python3迭代器iterator – Python3教程