2015-10-07 21 views
6

W Matlab, kiedy uruchomię funkcję "datenum" jako następującą;Równoważna funkcja datenum (datestring) Matlaba w Pythonie

datenum(1970, 1, 1); 

pojawia się następujący komunikat:

719529 

próbuję znaleźć równoważną funkcję lub skrypt, który będzie dać mi ten sam wynik. Niestety nie mogłem znaleźć wystarczającego wyjaśnienia w Internecie, aby to zrobić.

Przyjrzałem się temu samouczkowi: https://docs.python.org/2/library/datetime.html, ale to nie pomogło.

Czy możesz mi powiedzieć, jak mogę uzyskać takie samo wyjście w python?

Dzięki,

Odpowiedz

3

chciałbym użyć modułu datetime i funkcję toordinal()

from datetime import date 

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

719163 

Aby uzyskać datę dostał byś używają

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

719529 

lub dla ułatwienia konwersji

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

719529 

Uważam, że powodem, dla którego data jest wyłączona, jest fakt, że datenum rozpoczyna liczenie od 0 stycznia 0000, którego nie uznaje się za prawidłową datę. Będziesz musiał przeciwdziałać zmianie daty rozpoczęcia, dodając jeden do roku i dnia. Miesiąc nie ma znaczenia, ponieważ pierwszy miesiąc w datetime jest równa 0 w datenum

+0

Czy będę mógł dodać datestring jako parametr w funkcji "toordinalnej()"? – yusuf

+1

'date.toordinal (data (1970, 1, 1))' daje wynik '719163', który nie pasuje do wyniku w pytaniu – horns

+1

Proszę pokazać, jak uzyskać wyjście' 719529' z wejściem '1970, 1 , 1' używając twojego polecenia. – Psytho

2

można odjąć date obiektów w Pythonie:

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

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

Wystarczy zadbać, aby skorzystać z epoki, które są przydatne do Twoich potrzeb .

+0

Witaj Kay, czy wiesz, dlaczego obiekt "datetime.date" nie ma atrybutu "dni" "? :) – yusuf

+1

Prawdopodobnie przegapiłeś nawiasy. 'date (...) - date (...) → timedelta', a' timedelta' ma atrybut 'days'. – kay

+2

Daje to prawie tę samą odpowiedź co moja, co również nie jest poprawne. Jakiś pomysł, dlaczego? – SirParselot