将Python中的datetime转换为Matlab的datenum

5 投票
3 回答
12876 浏览
提问于 2025-04-17 09:47

你怎么把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可以理解并解析这个字符串。

撰写回答