Python中Matlab的datenum(datestring)的等价函数

时间:2015-10-07 12:15:12

标签: python matlab

在Matlab中,当我运行" datenum"功能如下;

datenum(1970, 1, 1);

我得到以下输出:

719529

我试图找到能够给我相同输出的等效函数或脚本。但是,遗憾的是,我无法在互联网上找到足够的解释来做到这一点。

我看过这个教程:https://docs.python.org/2/library/datetime.html,但它没有帮助。

你能告诉我,如何在python中获得相同的输出?

谢谢,

3 个答案:

答案 0 :(得分:5)

我会使用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从0000年1月0日开始计算,这并不是一个有效的日期。您必须通过在年和日中添加一个来抵消开始日期的更改。月份并不重要,因为datenum中的第一个月等于0

答案 1 :(得分:3)

您可以在Python中减去date个对象:

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

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

请注意使用对您的需求有用的纪元。

答案 2 :(得分:0)

先前的答案返回一个整数。 MATLAB的datenum不一定返回整数。以下代码重新生成与MATLAB的datenum相同的答案:

-