datetime

Methods

Method Reference: datetime.isregular

datetime: tf = isregular (T)

datetime: tf = isregular (T, unit)

datetime: [tf, dt] = isregular (…)

Determine whether a datetime vector is regularly spaced.

tf = isregular (T) returns true if the elements of the datetime vector T are equally spaced in time, and false otherwise. A scalar or empty T, or one containing a Not-A-Time (NaT) value, is not regular. Neither is a T that does not move: a step of zero describes no spacing, so a vector of repeated instants is not regularly spaced.

tf = isregular (T, unit) tests for regular spacing with respect to unit, which may be 'time' (the default), 'years', 'quarters', 'months', 'weeks', or 'days'. With a calendar unit, T is regular when successive elements differ by the same whole number of that unit, which – unlike 'time' – accounts for varying month lengths and daylight saving time.

[tf, dt] = isregular (…) also returns the common time step dt. For 'time' it is a duration; for a calendar unit it is a calendarDuration. When T is not regular, dt is NaN.

Steps are compared as stored, to the microsecond this class keeps. A spacing that differs by less than that cannot be seen and reads as regular, while one that rounds differently at the microsecond – thirds of a second, say – reads as irregular. MATLAB stores instants more finely and so draws that line elsewhere.

Source Code: datetime

isregular tests whether a datetime vector is equally spaced. A daily series is regular; drop a day and it is not.

 isregular (datetime (2024, 1, 1) : caldays (1) : datetime (2024, 1, 5))
ans = 1
 isregular (datetime (2024, 1, [1, 2, 5]))
ans = 0

A monthly series is not equally spaced in absolute time, since months differ in length, but it IS regular with respect to the 'months' unit, and the second output returns the common step.

 m = datetime (2024, 1, 1) : calmonths (1) : datetime (2024, 5, 1)
m =
  1x5 datetime array

    01-Jan-2024    01-Feb-2024    01-Mar-2024    01-Apr-2024    01-May-2024
 isregular (m)
ans = 0
 [tf, step] = isregular (m, 'months')
tf = 1
step =
  calendarDuration

   1mo