addtodate: unexpected result when adding years

조회 수: 2 (최근 30일)
Andrew
Andrew 2014년 5월 19일
댓글: Star Strider 2014년 5월 19일
Hi all,
I'm having an issue with addtodate.m. The example:
addtodate(1, 2014, 'year')
ans =
-734501
is not what I expected... Does anyone know what's going on?
Notes: I'm trying to use addtodate to sanitize a date vector
datevec_unsan = [2014, 1, 1, 40, 0, 0]; % there aren't 40 hours in a day...
types = {'year', 'month', 'day', 'hour', 'minute', 'second'};
tstamp = 0;
for i = 1:6
tstamp = addtodate(tstamp, datevec_unsan(i), types{i});
end
datevec_sanitized = datevec(tstamp);

답변 (2개)

the cyclist
the cyclist 2014년 5월 19일
편집: the cyclist 2014년 5월 19일
I was unaware of this handy function before, but this definitely seems like a bug. The result of
datestr(addtodate(1,2014,'year'))
is '01-Jan-7986', while
datestr(addtodate(1,-2014,'year'))
gives '01-Jan-2014' (which I am guessing is what you expected for your answer originally). Adding just a day or a month seems to work fine, though.
I am about to head out the door, so I can't dig in right now, but you could try
edit addtodate
to poke into the function and see what's going on. I suggest you fill out a bug report, unless someone here points out something obvious that you and I are misunderstanding!
  댓글 수: 1
Andrew
Andrew 2014년 5월 19일
Thanks for looking at this. addtodate uses addtodatemx so I don't think we can look at the source sadly

댓글을 달려면 로그인하십시오.


Star Strider
Star Strider 2014년 5월 19일
MATLAB will do the correction for you. I don’t know the result you want, but this works:
datevec_unsan = [2014, 1, 1, 40, 0, 0]
x = datenum(datevec_unsan);
datevec_new = datevec(x)
produces:
datevec_unsan =
2014 1 1 40 0 0
datevec_new =
2014 1 2 16 0 0
  댓글 수: 2
Andrew
Andrew 2014년 5월 19일
편집: Andrew 2014년 5월 19일
Good idea - its even in the datenum documentation that it supports it! And it saves me putting in correction for 1 based days in my original code.
Star Strider
Star Strider 2014년 5월 19일
Thanks!
If it solved your problem, the sincerest form of appreciation her on ‘MATLAB Answers’ is to Accept it.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Time Series Objects에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by