## changing minutes after midnight into a datetime array

### AA (view profile)

on 26 Oct 2017
Latest activity Commented on by Walter Roberson

on 20 Nov 2017

### per isakson (view profile)

Suppose you have the matrix minutesaftermid which contains integers that represent the minutes after midnight, e.g. 1,2,3,4,5,6,7,......
How do I convert this format to a datetime array.
t = datetime(Y,M,D,H,MI,S,MS), but I only needs the MI.

### per isakson (view profile)

on 26 Oct 2017
Edited by per isakson

### per isakson (view profile)

on 26 Oct 2017

"but I only need the MI" I don't think you can avoid the date and time.
X = 60*[1,2,3,4,5,6,7];
T = datetime( X, 'ConvertFrom','epochtime', 'Epoch','2000-01-01' )
T =
Columns 1 through 4
2000-01-01 00:01:00 2000-01-01 00:02:00 2000-01-01 00:03:00 2000-01-01 00:04:00
Columns 5 through 7
2000-01-01 00:05:00 2000-01-01 00:06:00 2000-01-01 00:07:00
and
>> T.Minute
ans =
1 2 3 4 5 6 7
Remark: the year 2000 is a leap year.

### Walter Roberson (view profile)

on 26 Oct 2017

datetime('today') + minutes(minutesaftermid)
if you wanted it to be relative to today (local time)
If you just need minutes after midnight and not any particular day, you should probably be leaving it as a duration array instead of a datetime array.

### Peter Perkins (view profile)

on 16 Nov 2017

datetimes are dates+times. As Walter says, unless you also have a set of dates, or you want 'today', then you likely want a duration array, and so just call the minutes function to create one.

Walter Roberson

### Walter Roberson (view profile)

on 16 Nov 2017
Yup.
... Unless, that is, your minutes exceeds one day and you want it to find each one relative to its own midnight and you need to take into account timezone changes that could leave you with only 23 hours or up to 25 hours in one day...
Peter Perkins

### Peter Perkins (view profile)

on 20 Nov 2017
Ah, right. So you can either add minutes (as you showed), or if you have the date portion as numeric values, you can use the "roll-over" behavior built into the constructor:
>> datetime(2017,11,1:3,0,[1430 1440 1450],0)
ans =
1×3 datetime array
01-Nov-2017 23:50:00 03-Nov-2017 00:00:00 04-Nov-2017 00:10:00
Walter Roberson

### Walter Roberson (view profile)

on 20 Nov 2017
I might...
T = datetime(2017,11,1:3,0,[1430 1440 1450],0, 'TimeZone', 'local');
[H, M] = hms(T);
mins_since_midnight = H * 60 + M
... though I would want to double-check outputs when there are time zone changes. I have now gotten myself confused about what "minutes since midnight" even means when there are time-zone changes.