English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 基础教程

Python 流程控制

Funzione in Python

Tipi di dati in Python

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

strptime() en Python

在本文中,您将学习如何从字符串创建datetime对象(在示例的帮助下)。

strptime()方法从给定的字符串创建datetime对象。

注意:您不能从每个字符串创建datetime对象。该字符串必须采用某种格式。

示例1:日期时间对象的字符串

from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("date_string数据类型 =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object = ", date_object)
print("date_object数据类型  =", type(date_object))

Quando si esegue il programma, l'output è:

date_string = 21 June, 2018
date_string 数据类型 = <class 'str'>
date_object = 2018-06-21 00:00:00
date_object 数据类型  = <class 'datetime.datetime'>

strptime()如何工作?

strptime()类方法有两个参数:

  • 字符串(将转换为日期时间)

  • 格式代码

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

Nell'esempio sopra:

Ecco,

  • %d-表示每月的一天。Esempio: 01,02,...,31

  • %B-月份的全名。Ad esempio:Gennaio, Febbraio等

  • %Y-年以四位数表示。Ad esempio: 2018、2019等

Esempio 2: stringa dell'oggetto data/ora

from datetime import datetime
dt_string = "12/11/2019 09:15:32"
# La data è nel formato dd/mm/yyyy
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# La data è nel formato mm/dd/yyyy
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

Quando si esegue il programma, l'output è:

dt_object1 = 2019-11-12 09:15:32
dt_object2 = 2019-12-11 09:15:32

Elenco dei codici di formato

La tabella seguente mostra tutti i codici di formato che puoi utilizzare.

ComandoSignificatoEsempio
%aAbbreviazione del nome del giorno lavorativo.Dom, Lun,...
%ANome completo del giorno lavorativo.Domenica, Lunedì,...
%wGiorno lavorativo come numero decimale.0,1,...,6
%dGiorno del mese, rappresentato come numero decimale con riempimento zero.01,02,...,31
-%dGiorno del mese come numero decimale.1,2,...,30
%bAbbreviazione del mese.Gen, Feb,...,Dic
%BNome completo del mese.Gennaio, Febbraio,...
%mMese come numero decimale con riempimento zero.01,02,...,12
-%mMese come numero decimale.1,2,...,12
%yAnno senza secolo, numero decimale con riempimento zero.00,01,...,99
-%yAnno senza secolo come numero decimale.0,1,...,99
%YAnno come numero decimale del secolo.2013,2019 ecc.
%HOra (24 ore), numero decimale con riempimento zero.00,01,...,23
-%HOra (24 ore) come numero decimale.0,1,...,23
%IOra (12 ore), numero decimale con riempimento zero.01,02,...,12
-%IOra (12 ore) come numero decimale.1 2 2
%pAmbiente linguistico di mattina o pomeriggio.AM,PM
%MMinuto, numero decimale con riempimento zero.00, 01, ..., 59
%-MRappresentato come numero decimale.0, 1, ..., 59
%SSecondo numero decimale con zeri iniziali.00, 01, ..., 59
%-SSecondo numero decimale.0, 1, ..., 59
%fMicrosecondi, numero decimale, riempiti a sinistra con zero.000000-999999
%zFuso orario UTC, formato + HHMM o - HHMM. 
%ZNome della fascia oraria. 
%jGiorno dell'anno, rappresentato come numero decimale con zeri iniziali.001, 002, ..., 366
%-jGiorno dell'anno, rappresentato come numero decimale.1, 2, ..., 366
%USettimana dell'anno (domenica è il primo giorno della settimana). Tutti i giorni del nuovo anno prima del primo domenica sono considerati nella settimana 0.00, 01, ..., 53
%WSettimana dell'anno (lunedì è il primo giorno della settimana). Tutti i giorni del nuovo anno prima del primo lunedì sono considerati nella settimana 0.00, 01, ..., 53
%cForma appropriata della data e dell'ora di riferimento del linguaggio.Mon Sep 30 07:06:05 2013
%xForma appropriata della data di riferimento del linguaggio.13/9/30
%XForma appropriata del tempo di riferimento del linguaggio.07:06:05
%%Il carattere di testo "%".%

ValueError in strptime()

Se la stringa passata (primo parametro) e il codice di formato (secondo parametro) di strptime() non corrispondono, verrà generato un ValueError. Ad esempio:

from datetime import datetime
date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object = ", date_object)

Se esegui questo programma, verrà generato un errore.

ValueError: i dati di tempo '12/11/2018' non corrispondono al formato '%d %m %Y'

Leggi consigliati: strftime() en Python