MATLAB 中的多种日期格式[已关闭]

问题描述 投票:0回答:2

在 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 有不同的适用于这些命令的日期格式?在我的代码中实现一致风格的日期格式的最佳方法是什么?

matlab datetime date-formatting
2个回答
7
投票

在 R2014b 中,MathWorks 引入了一套新的功能(基于

datetime
类)来处理日期和时间,旨在作为旧函数(例如
datestr
datenum
)的改进替代品datevec

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

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

我建议,如果您正在编写新代码,请专门坚持使用基于

datetime
的功能。如果您要修改现有代码,请尝试保持选择一致,但在适当的时候逐渐将代码迁移到较新的功能。


0
投票

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

Mathworks 不断将一般内容从一个版本更改为另一个版本

这尤其非常麻烦,例如当你突然必须处理区分大小写的问题(我认为是从 2007 年到 2008 年发生的?),或者当你的图中突然有了新的定义颜色、非常不同的 OOP 处理(第一个 OOP 是一场噩梦)等。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.