Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python datetime到Matlab datenum_Python_Matlab_Datetime - Fatal编程技术网

Python datetime到Matlab datenum

Python 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

如何将Python
datetime
转换为Matlab
DateNum

要将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,稍微偏离了主题,但我不得不在MATLAB
datenum
和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