MATLAB: Round Datetime to certain minutes

datetimeMATLAB

Hey,
I am trying to round an array of datatype datetime to nearest 20 and 50 minutes, e.g. 16:30 – 16:20, 16:54 – 16:50, 16:01 – 15:50, 2020Nov19 00:01 – 2020Nov18 23:50. Does anyone have an idea? I already tried dateshift and interp1.
Your help is highly appreciated.

Best Answer

  • interp1 will work...
    dt=datetime(2020,11,18,00,1+[0:30].',0); % sample datetime array
    dt20=datetime(2020,11,17,0,[20:30:2400].',0); % 30 min array at 20, 50 past hour
    >> interp1(dt20,dt20,dt,'nearest')
    ans =
    31×1 datetime array
    17-Nov-2020 23:50:00
    17-Nov-2020 23:50:00
    17-Nov-2020 23:50:00
    17-Nov-2020 23:50:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    18-Nov-2020 00:20:00
    >>
    There's probably more clever ways...