2015-10-07 12 views
6

In Matlab, quando eseguo la funzione "datenum" come segue;Funzione equivalente di datenum (datestring) di Matlab in Python

datenum(1970, 1, 1); 

ottengo il seguente output:

719529 

Sto cercando di trovare la funzione equivalente o uno script che è gonna mi danno la stessa uscita. Ma sfortunatamente non sono riuscito a trovare una spiegazione sufficiente su internet per farlo.

Ho visto questo tutorial: https://docs.python.org/2/library/datetime.html, ma non è stato d'aiuto.

Potrebbe dirmi, come posso ottenere lo stesso risultato in python?

Grazie,

risposta

3

Vorrei utilizzare il modulo datetime e la funzione toordinal()

from datetime import date 

print date.toordinal(date(1970,1,1)) 

719163 

Per ottenere la data che hai si usa

print date.toordinal(date(1971,1,2)) 

719529 

o per facilitare la conversione

print date.toordinal(date(1970,1,1))+366 

719529 

Credo che il motivo per cui la data è disattivata sia dovuto al fatto che il datum inizia il suo conteggio a partire dal gennaio 0, 0000, che questo non riconosce come data valida. Dovrai neutralizzare la modifica della data di inizio aggiungendone una all'anno e al giorno. Il mese non importa, perché il primo mese in datetime è uguale a 0 in datenum

+0

Quindi, sarò in grado di aggiungere il datestring come parametro nella funzione "toordinal()"? – yusuf

+1

'date.toordinal (date (1970, 1, 1))' dà un risultato di '719163', che non corrisponde al risultato nella domanda – horns

+1

Si prega di mostrare come si ottiene output' 719529' con input '1970, 1 , 1 sta usando il tuo comando. – Psytho

2

È possibile sottrarre date oggetti in Python:

>>> date(2015, 10, 7) - date(1, 1, 1) 
datetime.timedelta(735877) 

>>> (date(2015, 10, 7) - date(1, 1, 1)).days 
735877 

Basta prendere cura di utilizzare un'epoca che è utile per le vostre esigenze .

+0

Ciao Kay, sai perché ottengo l'errore "datetime.date" l'oggetto non ha l'errore "giorni" "? :) – yusuf

+1

Probabilmente ti sei perso le parentesi. 'date (...) - date (...) → timedelta', e' timedelta' ha un attributo 'days'. – kay

+2

Questo dà quasi la stessa risposta del mio che non è giusto neanche. Qualche idea sul perché? – SirParselot