2015-10-07 159 views
6

在Matlab中,当我运行“datenum”函数时,如下所示;在Python中的Matlab的datenum(datestring)的等效函数

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 

我相信日期关闭的原因是由于datenum从1月0日开始计数,因此无法识别为有效日期。您必须通过在年份和日期中添加一个来抵消开始日期的变化。月份并不重要,因为在日期时间的第一个月等于0 datenum

+0

那么,我将能够添加日期字符串作为“toordinal()”函数中的参数吗? – yusuf

+1

'date.toordinal(date(1970,1,1))'给出了'719163'的结果,它与 – horns

+1

这个问题的结果不匹配请告诉我们如何得到输出'719529',输入'1970,1 ,1'使用你的命令。 – Psytho

2

您可以在Python。减去date对象:

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

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

只要小心使用一个划时代那就是你的需要有用。

+0

Hello Kay,你知道我为什么得到''datetime.date'对象没有属性'天'“错误吗? :) – yusuf

+1

可能你错过了括号。 'date(...) - date(...)→timedelta','timedelta'具有'days'属性。 – kay

+2

这给出了几乎与我一样不正确的答案。任何想法为什么? – SirParselot