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

 Réponse acceptée

Paul
Paul le 23 Jan 2014
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

Plus de réponses (1)

Mischa Kim
Mischa Kim le 21 Jan 2014

0 votes

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 commentaire

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

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by