将Python中的datetime转换为Matlab的datenum
你怎么把Python里的datetime
转换成Matlab里的datetnum
呢?
3 个回答
6
根据之前的内容,我得到了以下结果:
def datetime2matlabdn(dt):
ord = dt.toordinal()
mdn = dt + timedelta(days = 366)
frac = (dt-datetime(dt.year,dt.month,dt.day,0,0,0)).seconds / (24.0 * 60.0 * 60.0)
return mdn.toordinal() + frac
这个方法也应该适用于 timedelta.microseconds
。
在 IDLE 中:
n = datetime.now()
datetime.datetime(2012, 2, 13, 6, 56, 2, 619000)
datetime2matlabdn(n)
734912.28891203704
在 Matlab 中:
>> datestr(734912.28891203704)
ans =
13-Feb-2012 06:56:02
9
根据bavaza的回答 - 现在包括微秒:
def datetime2matlabdn(dt):
mdn = dt + timedelta(days = 366)
frac_seconds = (dt-datetime.datetime(dt.year,dt.month,dt.day,0,0,0)).seconds / (24.0 * 60.0 * 60.0)
frac_microseconds = dt.microsecond / (24.0 * 60.0 * 60.0 * 1000000.0)
return mdn.toordinal() + frac_seconds + frac_microseconds
9
要把日期时间转换成字符串,可以在Python中使用strftime这个方法:
import datetime
d = datetime.datetime.now()
print (d.strftime("%d-%b-%Y %H:%M:%S"))
根据MatLab的文档,datenum可以理解并解析这个字符串。