Python datetime到Matlab datenum
如何将PythonPython datetime到Matlab datenum,python,matlab,datetime,Python,Matlab,Datetime,如何将Pythondatetime转换为MatlabDateNum?要将datetime序列化为字符串,可以在Python端使用strftime: import datetime d = datetime.datetime.now() print (d.strftime("%d-%b-%Y %H:%M:%S")) 根据datenum的说法,我知道如何解析它。颠倒了所做的事情,我得到了: 也应使用timedelta.microseconds 空闲时: n=datetime.now() datet
datetime
转换为MatlabDateNum
?要将datetime序列化为字符串,可以在Python端使用strftime:
import datetime
d = datetime.datetime.now()
print (d.strftime("%d-%b-%Y %H:%M:%S"))
根据datenum的说法,我知道如何解析它。颠倒了所做的事情,我得到了:
也应使用timedelta.microseconds
空闲时:
n=datetime.now()
datetime.datetime(2012,2,13,6,56,2619000)
datetime2matlabdn(n)
734912.28891203704
在Matlab中:
>>datestr(734912.28891203704)
ans=
2012年2月13日06:56:02
根据巴瓦扎的回答-现在包括微秒:
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
你的意思是把一种语言的对象转换成另一种语言的对象吗?如果是这样,您使用的是什么接口(PyMat?),或者您的意思是如何以特定格式打印datetime对象?@DavidRobinson-不,我指的是Matlab知道如何读取的datenum的文本表示法。类似于
732399.65465
的东西,左边是从1/1/1(或1/1/0?!)开始的公历日,右边是一天的分数+1,稍微偏离了主题,但我不得不在MATLABdatenum
和C#System.DateTime
之间进行类似的转换,这是我的一个老答案。除了内部使用的不同单位外,参考时间点也被关闭了366天:实际上datestr(734912.28891203704,'mmmm dd,yyyy HH:MM:SS.FFF AM')
产生2012年2月13日6:56:02.000 AM
因此它不保留毫秒\微秒信息
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