如何在MATLAB中将日期转换为数字并再返回

mtl*_*tlb 6 excel matlab date

我的日期是1/11/2010

并使用该功能

=日期(年(A1),月(A1),日(A1))

使用Excel将日期转换为数字40189.

我可以使用MATLAB将数字40189再次转换回日期吗?

Jon*_*nas 11

使用DATESTR

>> datestr(40189)
ans =
12-Jan-0110
Run Code Online (Sandbox Code Playgroud)

遗憾的是,Excel于1900年1月1日开始计算.了解如何使用DATENUM将串行日期从Matlab转换为Excel

>> datenum(2010,1,11)
ans =
      734149
>> datenum(2010,1,11)-40189
ans =
      693960
>> datestr(40189+693960)
ans =
11-Jan-2010
Run Code Online (Sandbox Code Playgroud)

换句话说,要转换任何序列Excel日期,请调用

datestr(excelSerialDate + 693960)
Run Code Online (Sandbox Code Playgroud)

编辑

要以mm/dd/yyyy格式获取日期,请datestr使用指定的格式进行调用

excelSerialDate = 40189;
datestr(excelSerialDate + 693960,'mm/dd/yyyy')
ans =
01/11/2010
Run Code Online (Sandbox Code Playgroud)

此外,如果您想要摆脱本月的前导零,您可以使用REGEXPREP来修复问题

excelSerialDate = 40189;
regexprep(datestr(excelSerialDate + 693960,'mm/dd/yyyy'),'^0','')
ans =
1/11/2010
Run Code Online (Sandbox Code Playgroud)

  • 请注意,某些Excel文件在1904年开始,而不是1900年.(请参阅http://support.microsoft.com/kb/180162)如果您正在编写通用的Excel/Matlab日期转换代码,则需要进行测试用于或提供输入以指示1904特殊情况.1904年纪元Excel文件的datenum偏移量为695422. (2认同)