MATLAB中的多种日期格式

时间:2015-06-02 11:19:23

标签: matlab datetime date-formatting

在MATLAB中格式化日期时间,datetrings和datenums时,有两种不同的方式表示分钟和月份,分别为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');

请参阅datetr我们如何使用小写字母m表示月份和日期时间我们使用大写字母M表示月份。

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

2 个答案:

答案 0 :(得分:7)

在R2014b中,MathWorks引入了一套新功能(基于datetime类)来处理日期和时间,旨在用作datestr等旧功能的大大改进的替代品。 ,datenumdatevec

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

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

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

答案 1 :(得分:1)

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

  

Mathworks不断将一般事物从一个版本更改为另一个版本

当例如,这尤其非常麻烦。你突然不得不处理区分大小写的事情(发生在2007年到2008年我认为?),或者当你突然在你的情节中有新的颜色,非常不同的OOP处理(第一个OOP是一场噩梦)等。

对于你提出的问题:你提到的两个函数基本上是做同样的事情,但是在非常不同的版本中介绍过。

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

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

  

注意:datetime接受的字母标识符与datestr,datenum和datevec函数使用的字母标识符不同。