Could not recognize the format of the date/time text
    8 views (last 30 days)
  
       Show older comments
    
I have a timetable with a time column containing microsecond resolution. The time column contains something like this: 
"07/04/2021 07:55:27.502.118"
"07/04/2021 07:55:27.502.196"
"07/04/2021 07:55:27.502.274"
"07/04/2021 07:55:27.502.352"
"07/04/2021 07:55:27.502.430"
"07/04/2021 07:55:27.502.508"
How can i process the data using datetime function?
0 Comments
Accepted Answer
  Stephen23
      
      
 on 4 Oct 2022
        C = ["07/04/2021 07:55:27.502.118"
    "07/04/2021 07:55:27.502.196"
    "07/04/2021 07:55:27.502.274"
    "07/04/2021 07:55:27.502.352"
    "07/04/2021 07:55:27.502.430"
    "07/04/2021 07:55:27.502.508"];
D = datetime(regexprep(C,'\.(\d+)$','$1'), 'InputFormat','d/M/y H:m:s.SSSSSS');
Checking:
D.Format = 'MM/dd/yyyy HH:mm:ss.SSSSSS'
More Answers (1)
  Eric Delgado
      
 on 4 Oct 2022
        You can't. The precision of datetime is milliseconds, but you can use regexp.
inData  = "07/04/2021 07:55:27.502.118";
regData = regexp(inData, '(?<timestamp_ms>\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}.\d{3}).(?<us>\d*)', 'names')
outData = datetime(regData.timestamp_ms, 'InputFormat', 'dd/MM/yyyy HH:mm:ss.SSSSSS') + seconds(str2double(regData.us)/1e+6)
format long
second(outData)
2 Comments
  Eric Sofen
    
 on 4 Oct 2022
				To be clear,  datetime supports more than milliseconds. In fact, datetime guarantees at least nanosecond precision.
See Also
Categories
				Find more on Tables in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

