MATLAB 中的多种日期格式

Multiple date formats in MATLAB

在 MATLAB 中格式化日期时间、日期字符串和日期数字时,有两种不同的方式来表示分钟和月份,分别为 M 和 m 或 m 和 M。具体来说,当您使用 datestr 时,它与您使用 datetime 时不同。这是一个例子,

startdate='01/05/2015 12:35:22';
startdt=datetime(startdate,'InputFormat','dd/MM/yyyy HH:mm:ss');
startstr=datestr(startdt,'dd/mm/yyyy HH:MM:SS');

看看 datestr 我们如何使用小写的 m 来表示月份,对于 datetime 我们如何使用大写的 M 来表示月份。

为什么 MATLAB 具有适用于这些命令的不同日期格式?在我的代码中实现一致风格的日期格式的最佳方法是什么?

这是 Mathworks 的一个非常普遍的问题,也是许多 MATLAB 程序员抱怨的问题:

Mathworks keeps changing general things from one release to another

这特别麻烦,例如你突然不得不处理区分大小写的问题(我想是从 2007 年到 2008 年发生的?),或者当你突然在你的绘图中有了新的 def-colors,非常不同的 OOP 处理(第一个 OOP 是一场噩梦)等等

你的问题:你提到的两个函数基本上做同样的事情,但在非常不同的版本中引入。

  • 2006 年之前的日期
  • 2014 年之后的日期时间

所以我怀疑 doctorlove 的评论是否正确,Mathworks 更改了此格式,使其更类似于 ISO 规范。即使在 mathworks 网站上,您也可以找到非常轻微的评论

Note: The letter identifiers that datetime accepts are different from those used by the datestr, datenum, and datevec functions.

在 R2014b 中,MathWorks 引入了一套新的功能(基于 datetime class)来处理日期和时间,旨在用作旧功能的改进替代品,例如作为 datestrdatenumdatevec.

旧功能的一个问题是它没有使用标准格式字符串来描述日期和时间格式。较新的功能正确地执行了它,符合 ISO 8601。它还对时区和区域设置、基于日历的持续时间和纳秒级精度提供了适当的支持。

为了向后兼容,仍然保留了较旧的功能。在 MATLAB 的某些未来版本中,它们可能会开始逐渐被淘汰。通常的过程是,对于几个版本,他们会发出(可抑制的)警告,表明您可能希望修改代码以使用更新的功能;然后在几个版本之后它们将被删除(这最终会导致仍在使用它们的代码出错)。

我建议,如果您正在编写新代码,则只坚持使用基于 datetime 的功能。如果您正在修改现有代码,请尝试在您的选择中保持一致,但在适当的时候逐渐将您的代码迁移到更新的功能。