2010-10-08 18 views
13

Sto usando questo per convertire data stringhe di tempo per un timestamp unix:python - equivalente a strtotime?

str(int(time.mktime(time.strptime(date,"%d %b %Y %H:%M:%S %Z")))) 

Tuttavia spesso la struttura data non è la stessa in modo continuo a ricevere il seguente messaggio di errore:

tempo i dati non corrisponde formato: data = gio, 26 mag 2009 19:58:20 -0500 fmt =% d% b% Y% H:% M:% S% Z

qualcuno sa di qualsiasi semplicemente funzione per convertire una rappresentazione di stringa di una data/ora in un timestamp unix in pytho n? Io davvero non voglio avere per aprire un processo di chiamare uno script php per riprendere il tempo ogni volta timestamp in un ciclo :)

+0

Sta dicendo che il formato della stringa è diversa da invocazione alla invocazione? E vuoi che questa funzione rilevi il formato della tua stringa per te? – Ray

+0

Sì, questo è quello che sta dicendo. Il richiedente è abituato allo strtotime di PHP, che include tale euristica dell'autodeterminazione del formato della data. –

+1

Perché lo str (int (...)) intorno all'espressione? I timestamp Unix in Python vengono solitamente passati in giro come numeri in virgola mobile che consentono i secondi frazionari; probabilmente non dovresti convertire in una stringa a meno che non sia necessario stampare direttamente la data/ora per qualche motivo. –

risposta

27
from dateutil.parser import parse 

parse('Tue, 26 May 2009 19:58:20 -0500').strftime('%s') 

# returns '1243364300' 
+12

Questo sembra essere un riferimento al modulo di terze parti qui: http://labix.org/python-dateutil. Per quanto ne so, non esiste un modo semplice per analizzare stringhe di date di formato sconosciuto nella libreria standard di Python. –

+0

che ha risposto al mio problema, per me va bene con i moduli di terze parti. – Joe

+0

è dolce. grazie per averlo portato alla mia attenzione! – Andbdrew