2015-10-07 2 views
6

В Matlab, когда я запускаю функцию «datenum», выполните следующие действия;Эквивалентная функция данных (datestring) Matlab в Python

datenum(1970, 1, 1); 

я получаю следующий результат:

719529 

Я пытаюсь найти эквивалентную функцию или скрипт, который собирается дать мне тот же результат. Но, к сожалению, я не мог найти достаточно объяснений в Интернете, чтобы сделать это.

Я просмотрел этот учебник: https://docs.python.org/2/library/datetime.html, но это не помогло.

Не могли бы вы рассказать мне, как я могу получить тот же результат в python?

Спасибо,

ответ

3

Я хотел бы использовать модуль DATETIME и функции toordinal()

from datetime import date 

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

719163 

Чтобы получить дату вы получили бы вы использовать

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

719529 

или для упрощения преобразования

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

719529 

Я считаю, что причина, по которой дата отключена, связана с тем, что дата-дата начинает отсчет с 0 января 0000 года, который не признается действительной датой. Вам придется противодействовать изменению в стартовой дате, добавив один к году и дню. Месяц не имеет значения, потому что первый месяц в DateTime равно 0 в datenum

+0

Итак, смогу ли я добавить datestring в качестве параметра в функцию «toordinal()»? – yusuf

+1

'date.toordinal (date (1970, 1, 1))' дает результат '719163', который не соответствует результату в вопросе – horns

+1

. Пожалуйста, покажите, как вы получаете вывод' 719529' с вводом '1970, 1 , 1' используя вашу команду. – Psytho

2

Вы можете вычитать date объектов в Python:

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

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

Просто позаботьтесь, чтобы использовать эпоху, которая полезна для ваших потребностей ,

+0

Здравствуйте, Kay, вы знаете, почему я получаю объект '' datetime.date 'не имеет атрибута' days '' error? :) – yusuf

+1

Возможно, вы пропустили круглые скобки. 'date (...) - date (...) → timedelta', а' timedelta' имеет атрибут 'days'. – kay

+2

Это дает почти тот же ответ, что и мой, который тоже не прав. Любая идея о том, почему? – SirParselot

Смежные вопросы