How to substract months with EOM respect ?

Hi, I would like to know if there is solution to substract months with respect of the End of Month flag. I've tried addtodate() and addMonth() functions but it's not giving me the wanted results.
Here is an exemple : If today's date is 31/01/14 and if I substract 2 months, I'd like as a result the 30/11/2013 and not the 01/12/2013. In the meantime,I like that if today's date is 28/02/2014 and if I substract 2 months, I'd like as a result the 28/12/2013 and not the 31/12/2013 (as addMonth function do).
Many thanks in advance, Regards, Paul

 Accepted Answer

This should works. Logic isn't it ? :-)
function UnadjDate = AddMonthUnadj(date,nbMonth)
Mdate = x2mdate(date); [Y,M,D] = datevec(Mdate);
MatlabDate = addMonth(Mdate,nbMonth,0);
MatlabDateEOM = addMonth(Mdate,nbMonth,1);
if eomdate(Mdate) == Mdate & D ~= [28;29;30]
UnadjDate = m2xdate(MatlabDateEOM);
else
UnadjDate = m2xdate(MatlabDate);
end

More Answers (1)

Hello Paul, there is no function out of the box that does that, as far as I know. You could use the eomday function with a bit of logic. As an alternative you might want to check on File Exchange .

1 Comment

Hi, Logic has always been my weakness :-) but I'll try to find a way.
Thx Mischa

Sign in to comment.

Categories

Asked:

on 21 Jan 2014

Answered:

on 23 Jan 2014

Community Treasure Hunt

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

Start Hunting!