MATLAB: Time stamp formatting question

MATLABtime stamp

Hi everyone –
I have a time stamp in the following form : '0d 00:00:5.03000020980835'
I am trying to convert it into a vector in hh:mm:ss, any ideas?

Best Answer

  • dtstr = '0d 00:00:5.03000020980835';
    dtstr = regexprep(dtstr,'\d+d',''); %remove days
    dt = datetime(dtstr,'InputFormat','HH:mm:ss.SSS','Format','HH:mm:ss')
    [update]
    To preserve the number of days within the hour-count and to account for missing decimals in the seconds,
    dtstr = {'0d 23:59:58.439998626709'
    '0d 23:59:59'
    '1d 00:00:0'
    '1d 00:00:1.44000005722046'
    '1d 00:00:2.44000005722046'
    '1d 00:00:3.44000005722046'};
    % Add .0 to time stamps that are missing the decimal
    noDecIdx = ~cellfun(@(x)contains(x,'.'),dtstr);
    dtstr(noDecIdx) = cellfun(@(x)[x,'.0'],dtstr(noDecIdx),'UniformOutput',false);
    % replace "d " with ":"
    dtstr = strrep(dtstr,'d ',':');
    % Convert to your desired format as durations
    D = duration(dtstr,'InputFormat', 'dd:hh:mm:ss.S','Format','hh:mm:ss');
    Result:
    6×1 duration array
    23:59:58
    23:59:59
    24:00:00
    24:00:01
    24:00:02
    24:00:03