is there a jump of 2 months?

1 view (last 30 days)
antonet on 17 Aug 2012
Dear all
I have the following sequence of dates
I want to see if I have a jump of two months. for instance, in the above example there is such a jump from '08/04/2001' to '03/06/2001'.
I am looking for an if statement
if there is not such a jump

Accepted Answer

José-Luis on 17 Aug 2012
Edited: José-Luis on 17 Aug 2012
Assuming your data is ordered, and that you have the financial toolbox:
numDate = datenum(A,'dd/mm/yyyy');
numDate = numDate - numDate(1);
monthNumber = month(test) + 12 * year(test);
jumpMonth = [0; diff(monthNumber)];
The vector jumpMonth will contain the difference in months between two succesive dates.

More Answers (2)

Wayne King
Wayne King on 17 Aug 2012
The basic way to do it is using datenum()
B = datenum(A,'dd/mm/yyyy');
numdays = diff(B);
nummonths = numdays/30;
Then you need to use floor(), round(),ceil() or something similar, but you will see that only one element of nummonths is close to 2 in value
So, in this example
nummonths = ceil(nummonths);
for nn = 1:length(nummonths)
if (nummonths(nn) > 1.5 & nummonths(nn) < 3.5)
disp('There''s a jump');
disp('No Jump');
Anyway, you get the point.

Andrei Bobrov
Andrei Bobrov on 17 Aug 2012
[m,m] = datevec(A,'dd/mm/yyyy');
test = [0;mod(diff(m),12)] == 2;


Find more on Dates and Time in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!

Translated by