首页 > 解决方案 > 为什么 datetime() 输出中的 4 天对应于 Matlab 中 datestr() 的 1 个月和 4 天?

问题描述

我在 Matlab 2019a 中遇到了以下问题。

>> datestr(datetime('20190927','InputFormat','yyyyMMdd')-datetime('20190923','InputFormat','yyyyMMdd'),'yyyymmdd')
ans =
    '00000104'

为什么答案是 1 个月 4 天?不应该是零月四天吗?

编辑:

我意识到日期时间数组的算术创建持续时间数组。但我不知道如何在对日期时间数组进行算术运算后设置持续时间数组的格式,或者如何以无格式的方式检索持续时间数据。

日期时间算术是我需要的。所以我在问这个问题,所以我可以毫无问题地进行日期时间算术。

标签: matlabdate

解决方案


d = datetime('20190927','InputFormat','yyyyMMdd')-datetime('20190923','InputFormat','yyyyMMdd')

返回:

d = 
  duration
   96:00:00

也就是96小时。将其转换为日期字符串会导致 1 月 4 日。如果您从第 0 年的午夜开始计算小时数,那么 96 小时后您将在 1 月 4 日结束。没有第0个月。

你可以做的是:

d = duration(d,'Format','dd:hh:mm:ss')

返回:

d = 
  duration
   04:00:00:00

你也可以这样做:

d = days(d)

返回:

d =
     4

推荐阅读