📜  Python strptime()

📅  最后修改于: 2020-09-19 13:43:40             🧑  作者: Mango

在本文中,您将学习从字符串创建日期时间对象(借助示例)。

strptime()方法根据给定的字符串创建一个datetime对象。

注意:您不能从每个字符串创建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 = 
date_object = 2018-06-21 00:00:00
type of date_object = 

strptime()如何工作?

strptime()类方法采用两个参数:

  1. 字符串 (将转换为日期时间)
  2. 格式码

根据使用的字符串和格式代码,该方法返回其等效的datetime对象。

在上面的示例中:

strptime()如何在Python中工作?

这里,

  1. %d表示每月的某天。示例:01,02,…,31
  2. %B月份的全名。例如:一月,二月等
  3. %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

格式代码列表

下表显示了您可以使用的所有格式代码。

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

如果传递给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()