2010-04-27 17 views
20

Ho seguente data:Come convertire una stringa di data in un oggetto DateTime?

2005-08-11T16:34:33Z 

ho bisogno di sapere se questo è data è prima o dopo datetime (2009,04,01) e io non riesco a trovare un metodo che permette di convertire che stringa a qualcosa che mi permette di confrontarlo con datetime (2009,04,01) in modo significativo.

risposta

35

Dal momento che la stringa è in formato ISO, può essere significato confrontato direttamente con la versione ISO formato del datetime si parla:

>>> s='2005-08-11T16:34:33Z' 
>>> t=datetime.datetime(2009,04,01) 
>>> t.isoformat() 
'2009-04-01T00:00:00' 
>>> s < t 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't compare datetime.datetime to str 
>>> s < t.isoformat() 
True 
>>> z='2009-10-01T18:20:12' 
>>> z < t.isoformat() 
False 

, come si vede, mentre non si può paragonare stringa con oggetti datetime , a patto che le stringhe siano in formato ISO, va bene confrontarle con lo .isoformat() degli oggetti datetime. Questa è la bellezza della rappresentazione della stringa in formato ISO di date e orari: è correttamente confrontabile e ordina correttamente come stringhe, senza necessariamente richiedere la conversione in altri tipi.

Se siete interessati a convertire, naturalmente, è possibile: (secondo anno, mese, giorno, ora, minuto,) la funzione

>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ') 
datetime.datetime(2005, 8, 11, 16, 34, 33) 
+0

@Eric, sei il benvenuto! –

0

Se si conosce la stringa basta usare la datetime.datetime . Dividi la tua stringa per ottenere le variabili appropriate e inseriscila per renderla un tipo datetime. Quindi confrontalo con quello che ti serve.

Oppure è possibile utilizzare il formato iso come suggerito anche dalle persone.

+0

Grazie brocca. È così che l'ho fatto, ma sapevo che doveva esserci qualcosa di più elegante là fuori. E Alex lo ha fornito. :) –

+0

Prego! Alex's è sicuramente la soluzione più elegante. Non ero certo del modo in cui il formato iso funzionava in cima alla mia testa e sono lontano dal mio normale computer per controllare. –

Problemi correlati