2015-10-07 10 views
6

In Matlab, wenn ich "datenum" Funktion wie folgt ausführen;Äquivalente Funktion von Datum (Datetring) von Matlab in Python

datenum(1970, 1, 1); 

bekomme ich folgende Ausgabe:

719529 

Ich versuche, die entsprechende Funktion oder ein Skript zu finden, das wird mir wird gibt die gleiche Leistung. Leider konnte ich dafür im Internet keine ausreichende Erklärung finden.

Ich habe dieses Tutorial angeschaut: https://docs.python.org/2/library/datetime.html, aber es hat nicht geholfen.

Können Sie mir sagen, wie kann ich die gleiche Ausgabe in Python bekommen?

Danke,

Antwort

3

ich den Datetime-Modul, das Sie und die toordinal() Funktion

from datetime import date 

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

719163 

Um das Datum bekam verwenden würden Sie

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

719529 

oder für eine einfachere Konvertierung verwenden würde

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

719529 

Ich glaube, der Grund für das Ausbleiben des Datums liegt darin begründet, dass die Datenzählung ab Januar 0, 0000 beginnt und nicht als gültiges Datum anerkannt wird. Sie müssen der Änderung des Startdatums entgegenwirken, indem Sie eins zu Jahr und Tag hinzufügen. Der Monat keine Rolle spielt, weil der erste Monat in Datumzeit auf 0 in datenum- gleich

+0

Also, kann ich Datenstring als Parameter in "toordinal()" -Funktion hinzufügen? – yusuf

+1

'date.toordinal (Datum (1970, 1, 1))' ergibt ein Ergebnis von '719163', was nicht mit dem Ergebnis in der Frage übereinstimmt – horns

+1

Bitte zeigen Sie, wie Sie die Ausgabe' 719529' mit Eingabe '1970, 1 erhalten , 1 'mit Ihrem Befehl. – Psytho

2

Sie date Objekte in Python subtrahieren können:

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

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

nur darauf achten, eine Epoche zu verwenden, die auf Ihre Bedürfnisse geeignet ist .

+0

Hallo Kay, weißt du, warum bekomme ich "'datetime.date' Objekt hat kein Attribut 'Tage'" Fehler? :) – yusuf

+1

Wahrscheinlich haben Sie die Klammern verpasst. 'date (...) - date (...) → timedelta', und' timedelta' hat ein Attribut 'days'. – kay

+2

Dies gibt fast die gleiche Antwort wie meine, die auch nicht richtig ist. Irgendeine Idee warum? – SirParselot

Verwandte Themen