📅  最后修改于: 2020-09-19 13:43:40             🧑  作者: Mango
strptime()
方法根据给定的字符串创建一个datetime对象。
注意:您不能从每个字符串创建datetime
对象。该字符串必须采用某种格式。
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 =
date_object = 2018-06-21 00:00:00
type of date_object =
strptime()
类方法采用两个参数:
根据使用的字符串和格式代码,该方法返回其等效的datetime
对象。
在上面的示例中:
这里,
%d
表示每月的某天。示例:01,02,…,31 %B
月份的全名。例如:一月,二月等%Y
四位数的年份。例如:2018、2019等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
下表显示了您可以使用的所有格式代码。
Directive | Meaning | Example |
%a |
Abbreviated weekday name. | Sun, Mon, … |
%A |
Full weekday name. | Sunday, Monday, … |
%w |
Weekday as a decimal number. | 0, 1, …, 6 |
%d |
Day of the month as a zero-padded decimal. | 01, 02, …, 31 |
%-d |
Day of the month as a decimal number. | 1, 2, …, 30 |
%b |
Abbreviated month name. | Jan, Feb, …, Dec |
%B |
Full month name. | January, February, … |
%m |
Month as a zero-padded decimal number. | 01, 02, …, 12 |
%-m |
Month as a decimal number. | 1, 2, …, 12 |
%y |
Year without century as a zero-padded decimal number. | 00, 01, …, 99 |
%-y |
Year without century as a decimal number. | 0, 1, …, 99 |
%Y |
Year with century as a decimal number. | 2013, 2019 etc. |
%H |
Hour (24-hour clock) as a zero-padded decimal number. | 00, 01, …, 23 |
%-H |
Hour (24-hour clock) as a decimal number. | 0, 1, …, 23 |
%I |
Hour (12-hour clock) as a zero-padded decimal number. | 01, 02, …, 12 |
%-I |
Hour (12-hour clock) as a decimal number. | 1, 2, … 12 |
%p |
Locale’s AM or PM. | AM, PM |
%M |
Minute as a zero-padded decimal number. | 00, 01, …, 59 |
%-M |
Minute as a decimal number. | 0, 1, …, 59 |
%S |
Second as a zero-padded decimal number. | 00, 01, …, 59 |
%-S |
Second as a decimal number. | 0, 1, …, 59 |
%f |
Microsecond as a decimal number, zero-padded on the left. | 000000 – 999999 |
%z |
UTC offset in the form +HHMM or -HHMM. | |
%Z |
Time zone name. | |
%j |
Day of the year as a zero-padded decimal number. | 001, 002, …, 366 |
%-j |
Day of the year as a decimal number. | 1, 2, …, 366 |
%U |
Week number of the year (Sunday as the first day of the week). All days in a new year preceding the first Sunday are considered to be in week 0. | 00, 01, …, 53 |
%W |
Week number of the year (Monday as the first day of the week). All days in a new year preceding the first Monday are considered to be in week 0. | 00, 01, …, 53 |
%c |
Locale’s appropriate date and time representation. | Mon Sep 30 07:06:05 2013 |
%x |
Locale’s appropriate date representation. | 09/30/13 |
%X |
Locale’s appropriate time representation. | 07:06:05 |
%% |
A literal ‘%’ character. | % |
如果传递给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()