Почему 4 дня в выводе datetime () соответствуют 1 месяцу и 4 дням с datestr () в Matlab? - PullRequest
2 голосов
/ 28 сентября 2019

Я сталкиваюсь со следующей проблемой в Matlab 2019a.

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

Почему ответ 1 месяц 4 дня?Разве это не должен быть нулевой месяц 4 дня?

РЕДАКТИРОВАТЬ:

Я понимаю, что арифметика на массивах datetime создает массивы продолжительности.Но я не знаю, как установить формат массивов продолжительности после выполнения арифметики для массивов datetime или как извлечь данные продолжительности в произвольном формате.

Мне нужна арифметика Datetime.Поэтому я задаю вопрос, чтобы я смог сделать арифметику с датой и временем без проблем.

1 Ответ

1 голос
/ 28 сентября 2019
d = datetime('20190927','InputFormat','yyyyMMdd')-datetime('20190923','InputFormat','yyyyMMdd')

возвращает:

d = 
  duration
   96:00:00

То есть 96 часов.Преобразование этого в строку даты приводит к 4 января.Если вы начнете считать часы с полуночи в году 0, то через 96 часов вы закончите 4 января.Там нет 0-го месяца.

Что вы можете сделать, это:

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

, который возвращает:

d = 
  duration
   04:00:00:00

Вы также можете сделать:

d = days(d)

, который возвращает:

d =
     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...