我希望能够将DateTime(2012/12/31 10-21-17.617)转换为Matlab采用的十进制数(日期序列号)。
我已经使用以下方法将Matlab日期序列号转换为日期时间格式(yyy/mm/dd HH:mm:ss.fff
):
DateTime conv = new DateTime(1, 1, 1).AddDays(734139.045000000040).AddYears(-1)
然而,我希望能够做与上述相反的事情。我知道.NET的日期是从0001/01/01
开始的,而对于Matlab,它是0000/00/00
。
除非我遗漏了什么,否则一个简单的方法是TimeSpan.TotalDays(http://msdn.microsoft.com/en-us/library/system.timespan.totaldays.aspx)
创建一个从任意点到您试图转换的DateTime的时间跨度,然后根据需要调整偏移量,将其转换为matlab格式。添加代码示例
private DateTime MatlabToNET(double days)
{
return new DateTime(1, 1, 1).AddDays(days).AddYears(-1);
}
private double NETtoMatlab(DateTime dt)
{
TimeSpan ts = dt - new DateTime();
return ts.TotalDays + 365;
}