在本文中,您將學(xué)習(xí)如何從字符串創(chuàng)建datetime對(duì)象(在示例的幫助下)。
strptime()方法從給定的字符串創(chuàng)建datetime對(duì)象。
注意:您不能從每個(gè)字符串創(chuàng)建datetime對(duì)象。該字符串必須采用某種格式。
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("date_string數(shù)據(jù)類型 =", type(date_string)) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object) print("date_object數(shù)據(jù)類型 =", type(date_object))
運(yùn)行該程序時(shí),輸出為:
date_string = 21 June, 2018 date_string 數(shù)據(jù)類型 = <class 'str'> date_object = 2018-06-21 00:00:00 date_object 數(shù)據(jù)類型 = <class 'datetime.datetime'>
strptime()類方法有兩個(gè)參數(shù):
字符串(將轉(zhuǎn)換為日期時(shí)間)
格式代碼
根據(jù)使用的字符串和格式代碼,該方法返回其等效datetime對(duì)象。
在上面的示例中:
這里,
%d-表示每月的一天。示例: 01,02,...,31
%B-月份的全名。例如:January, February等
%Y-年份以四位數(shù)表示。例如: 2018、2019等
from datetime import datetime dt_string = "12/11/2019 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)
運(yùn)行該程序時(shí),輸出為:
dt_object1 = 2019-11-12 09:15:32 dt_object2 = 2019-12-11 09:15:32
下表顯示了您可以使用的所有格式代碼。
指令 | 含義 | 實(shí)例 |
%a | 工作日名稱的縮寫。 | Sun, Mon, ... |
%A | 工作日全名。 | Sunday, Monday, ... |
%w | 工作日為十進(jìn)制數(shù)字。 | 0,1,...,6 |
%d | 月份中的一天,以零填充的十進(jìn)制數(shù)表示。 | 01,02,...,31 |
%-d | 以十進(jìn)制數(shù)表示的月份中的一天。 | 1,2,...,30 |
%b | 月份的縮寫。 | Jan, Feb, ..., Dec |
%B | 完整的月份名稱。 | January, February, ... |
%m | 月份為零填充的十進(jìn)制數(shù)字。 | 01、02,...,12 |
%-m | 以十進(jìn)制數(shù)表示的月份。 | 1,2,...,12 |
%y | 無世紀(jì)的年份,為零填充的十進(jìn)制數(shù)字。 | 00、01,...,99 |
%-y | 沒有世紀(jì)的年份作為十進(jìn)制數(shù)字。 | 0,1,...,99 |
%Y | 以世紀(jì)作為十進(jìn)制數(shù)字的年份。 | 2013、2019等 |
%H | 小時(shí)(24小時(shí)制),為補(bǔ)零的十進(jìn)制數(shù)字。 | 00、01,...,23 |
%-H | 小時(shí)(24小時(shí)制)為十進(jìn)制數(shù)字。 | 0,1,...,23 |
%I | 小時(shí)(12小時(shí)制),為零填充的十進(jìn)制數(shù)字。 | 01、02,...,12 |
%-I | 小時(shí)(12小時(shí)制)為十進(jìn)制數(shù)字。 | 1 2 2 |
%p | 語言環(huán)境的上午或下午。 | AM,PM |
%M | 分鐘,為零填充的十進(jìn)制數(shù)字。 | 00、01,...,59 |
%-M | 以十進(jìn)制數(shù)字表示。 | 0,1,...,59 |
%S | 第二個(gè)為零填充的十進(jìn)制數(shù)。 | 00、01,...,59 |
%-S | 第二個(gè)十進(jìn)制數(shù)字。 | 0,1,...,59 |
%f | 微秒,十進(jìn)制數(shù),在左側(cè)補(bǔ)零。 | 000000-999999 |
%z | UTC偏移量,格式為+ HHMM或-HHMM。 | |
%Z | 時(shí)區(qū)名稱。 | |
%j | 一年中的一天,以零填充的十進(jìn)制數(shù)字表示。 | 001,002,...,366 |
%-j | 一年中的天,以十進(jìn)制數(shù)字表示。 | 1,2,...,366 |
%U | 一年中的第幾周(星期日為一周的第一天)。在第一個(gè)星期日之前的新的一年中的所有天都被視為在第0周。 | 00、01,...,53 |
%W | 一年中的第幾周(星期一為一周中的第一天)。第一個(gè)星期一之前的新的一年中的所有天均視為在第0周。 | 00、01,...,53 |
%c | 語言環(huán)境的適當(dāng)日期和時(shí)間表示。 | Mon Sep 30 07:06:05 2013 |
%x | 語言環(huán)境的適當(dāng)日期表示形式。 | 13/9/30 |
%X | 語言環(huán)境的適當(dāng)時(shí)間表示形式。 | 07:06:05 |
%% | 文字“%”字符。 | % |
如果傳遞給的字符串(第一個(gè)參數(shù))和格式代碼(第二個(gè)參數(shù))strptime()不匹配,則會(huì)得到ValueError。例如:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
如果您運(yùn)行此程序,則會(huì)出現(xiàn)錯(cuò)誤。
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
推薦閱讀: Python strftime()