Clear Filters
Clear Filters

Using datenum for fraction of a second

13 views (last 30 days)
I am looking for a ways to convert some dates into datenum, given their special format. My dates look as follows:
'2017-02-28 21:36:51'
'2017-02-28 21:36:51.5'
'2017-02-28 21:36:52'
'2017-02-28 21:36:52.5'
'2017-02-28 21:36:53'
'2017-02-28 21:36:53.5'
etc. etc. etc.
In other words, the format of the dates alternates, such that every other entry has an additional 500 milliseconds at the end of it. How can I convert these to datenum simultaneously, given their different formats? (or at least, how can I convert dates with .5 to datenum?). I cannot skip or ignore any of this data.
Thanks
  1 Comment
Walter Roberson
Walter Roberson on 10 Mar 2017
Would datetime format instead of datenum format be acceptable?
datenum() tends to be more flexible in format conversion but sometimes datetime() is easier.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 10 Mar 2017
dates = {'2017-02-28 21:36:51'
'2017-02-28 21:36:51.5'
'2017-02-28 21:36:52'
'2017-02-28 21:36:52.5'
'2017-02-28 21:36:53'
'2017-02-28 21:36:53.5'};
temp = regexprep(dates, ':\d\d$', '$&.0', 'lineanchors');
Now temp is in consistent format
  2 Comments
Bruno Rodriguez
Bruno Rodriguez on 10 Mar 2017
Thank you, that certainly helps to make them consistent. However, I'm still unsure how to apply datenum to such a format. I seem to be getting two different datenum outputs for the first two cases above, but when I convert the second one back to datestr to double check, it still returns 21:36:51, even though it has a .5
Walter Roberson
Walter Roberson on 11 Mar 2017
datestr(datenum(temp), 'YYYY-mm-DD hh:MM:ss.fff')

Sign in to comment.

More Answers (0)

Categories

Find more on Dates and Time 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!