在本文中,您将学习从字符串创建datetime
对象(借助示例)。
strptime()
方法根据给定的字符串创建日期时间对象。
注意:不能从每个字符串创建datetime
对象。 该字符串必须采用某种格式。
示例 1:日期时间对象的字符串
1 2 3 4 5 6 7 8 9 10 11 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">date_string</span> <span class="pl-c1">=</span> <span class="pl-s">"21 June, 2018"</span> <span class="pl-en">print</span>(<span class="pl-s">"date_string ="</span>, <span class="pl-s1">date_string</span>) <span class="pl-en">print</span>(<span class="pl-s">"type of date_string ="</span>, <span class="pl-en">type</span>(<span class="pl-s1">date_string</span>)) <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">strptime</span>(<span class="pl-s1">date_string</span>, <span class="pl-s">"%d %B, %Y"</span>) <span class="pl-en">print</span>(<span class="pl-s">"date_object ="</span>, <span class="pl-s1">date_object</span>) <span class="pl-en">print</span>(<span class="pl-s">"type of date_object ="</span>, <span class="pl-en">type</span>(<span class="pl-s1">date_object</span>)) |
运行该程序时,输出为:
1 2 3 4 |
<span class="pl-s1">date_string</span> <span class="pl-c1">=</span> <span class="pl-c1">21</span> <span class="pl-v">June</span>, <span class="pl-c1">2018</span> <span class="pl-s1">type</span> <span class="pl-s1">of</span> <span class="pl-s1">date_string</span> <span class="pl-c1">=</span> <span class="pl-c1"><</span><span class="pl-k">class</span> <span class="pl-s">'str'</span><span class="pl-c1">></span> <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">06</span><span class="pl-c1">-</span><span class="pl-c1">21</span> <span class="pl-c1">00</span>:<span class="pl-c1">00</span>:<span class="pl-c1">00</span> <span class="pl-s1">type</span> <span class="pl-s1">of</span> <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-c1"><</span><span class="pl-k">class</span> <span class="pl-s">'datetime.datetime'</span><span class="pl-c1">></span> |
strptime()
如何工作?
strptime()
类方法采用两个参数:
- 字符串(将转换为日期时间)
- 格式码
根据使用的字符串和格式代码,该方法返回其等效的datetime
对象。
在上面的示例中:
这里,
%d
– 代表每月的某天。 示例: 01,02,…,31%B
– 月份的全名。 示例:一月,二月等%Y
– 四位数的年份。 示例: 2018,2019 等
示例 2:日期时间对象的字符串
1 2 3 4 5 6 7 8 9 10 11 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">dt_string</span> <span class="pl-c1">=</span> <span class="pl-s">"12/11/2018 09:15:32"</span> <span class="pl-c"># Considering date is in dd/mm/yyyy format</span> <span class="pl-s1">dt_object1</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">strptime</span>(<span class="pl-s1">dt_string</span>, <span class="pl-s">"%d/%m/%Y %H:%M:%S"</span>) <span class="pl-en">print</span>(<span class="pl-s">"dt_object1 ="</span>, <span class="pl-s1">dt_object1</span>) <span class="pl-c"># Considering date is in mm/dd/yyyy format</span> <span class="pl-s1">dt_object2</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">strptime</span>(<span class="pl-s1">dt_string</span>, <span class="pl-s">"%m/%d/%Y %H:%M:%S"</span>) <span class="pl-en">print</span>(<span class="pl-s">"dt_object2 ="</span>, <span class="pl-s1">dt_object2</span>) |
当你运行程序时,输出将是:
1 2 |
<span class="pl-s1">dt_object1</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">11</span><span class="pl-c1">-</span><span class="pl-c1">12</span> <span class="pl-c1">09</span>:<span class="pl-c1">15</span>:<span class="pl-c1">32</span> <span class="pl-s1">dt_object2</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">12</span><span class="pl-c1">-</span><span class="pl-c1">11</span> <span class="pl-c1">09</span>:<span class="pl-c1">15</span>:<span class="pl-c1">32</span> |
格式代码列表
下表显示了您可以使用的所有格式代码。
指令 | 含义 | 示例 |
---|---|---|
%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, ... |
%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 |
%% |
字面值% 字符。 |
% |
strptime()
中的ValueError
如果传递给strptime()
的字符串(第一个参数)和格式代码(第二个参数)不匹配,则会得到ValueError
。 例如:
1 2 3 4 5 6 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">date_string</span> <span class="pl-c1">=</span> <span class="pl-s">"12/11/2018"</span> <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">strptime</span>(<span class="pl-s1">date_string</span>, <span class="pl-s">"%d %m %Y"</span>) <span class="pl-en">print</span>(<span class="pl-s">"date_object ="</span>, <span class="pl-s1">date_object</span>) |
如果运行此程序,则会出现错误。
1 |
<span class="pl-v">ValueError</span>: <span class="pl-s1">time</span> <span class="pl-s1">data</span> <span class="pl-s">'12/11/2018'</span> <span class="pl-s1">does</span> <span class="pl-c1">not</span> <span class="pl-s1">match</span> <span class="pl-s1">format</span> <span class="pl-s">'%d %m %Y'</span> |
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!