Python等效的Matlab函数将OADa​​te转换为datetime

时间:2015-11-21 22:08:01

标签: python matlab

在Matlab中,我有一个从C#中的System.DateTime转换为OADate的双精度列表。在Matlab中,我可以轻松地将其转换为这样的列表:

symbol1TsData = datetime(symbol1TsDataDouble,'ConvertFrom', 'datenum');

Python中的等价物是什么?我尝试了这个,但回来的日期是错误的:

symbol1TsData = list(map(datetime.fromtimestamp, symbol1TsDataDouble))

1 个答案:

答案 0 :(得分:1)

我认为这样做会。 OLE时间是1899年12月30日午夜(奇怪的权利?!)的天数(不是像纪元一样的秒!)。

This也可能会有所帮助。

#ole time conversion
import datetime

OLE_TIME_ZERO = datetime.datetime(1899, 12, 30, 0, 0, 0)

def ole_to_epoch(ole):
    """ Input:  ole - float. Gives ole time, the number of DAYS since midnight 12/30/1899
        Output: float - epoch time
    """
    x = OLE_TIME_ZERO + datetime.timedelta(days=float(ole))
    return (x - datetime.datetime(1970,1,1)).total_seconds()