MATLAB: How to include milliseconds when converting datestr to datetime

datestrMATLABtimeseries

I am trying to convert a date string of the form 20-04-2018 09:37:46.657 ('dd-mm-yyyy HH:MM:SS.FFF') to a datetime, but I cannot get the right input format. I have a long time series of 20 measurements pr seconds, so the milliseconds are essential. Could I change the format in one or both of the functions to get the right result?
Here is my code:
posix_timestamp = 1.524216883857000e+09;
str = datestr(posix_timestamp/86400 + datenum('1/1/1970'), 'dd-mm-yyyy HH:MM:SS.FFF');
datetime(str, 'InputFormat', 'dd-mm-yyyy HH:MM:SS.FFF' );

Best Answer

posix_timestamp = 1.524216883857000e+09;
datetime(posix_timestamp,'convertfrom','posixtime', 'Format', 'yyyy-MM-dd HH:mm:ss.SSS')