此问题的背景是笔者要将一段MATLAB代码翻译成C#代码,matlab代码中使用日期运算,用到了datenum函数,计算了不同日期之间的时差等。C#中的日期类是DataTime,因此笔者尝试了一下。
matlab中的datenum函数可以把字符串或者字符数组表示的日期转换为数字,matlab默认将第0年的1月1日记录第0天,C#则不同,C#中,将1899年12月31日设为了第0天。
图1:MATLAB的datenum函数
图2:C#的ToOADate函数
2021年9月14日翻阅matlab帮助文件时,发现,matlab专门有个函数,可以将matlab日期转换为EXCEL日期,当然EXCEL的日期格式和C#是一致的。
matlab中日期转换为EXCEL日期的函数为exceltime
t1 = datetime(2021,9,14)
t2 = datetime(2020,9,14)
dt = exceltime(t1)-exceltime(t2)
此外,附上MATLAB和C#关于这两个日期转换数字的函数的说明。
- C#
DateTime.ToOADate 方法 (System) | Microsoft Docs
- MATLAB