Adding time to time string

2 views (last 30 days)
I am dealing with two strings, one for date and the other for time. The date string is in the format 'yyyy/MM/dd' and time is in the format 'HH:mm:ss'. I need to perform two tasks here:
  1. I need to merge both the strings to the format 'yyyy-MM-dd HH:mm:ss'.
  2. I have a 60x1 list that contains numbers(which are seconds). To the merged output I need to create a loop to add the seconds and create a new list with all the 60 updated times.
I hope I made sense. Kindly help me with this problem and let me know if you need any further clarification.

Accepted Answer

Garmit Pant
Garmit Pant on 5 Jul 2022
Hello Arcot
You can use the following code snippet as an example and adapt it to your own needs:
DateString = '2014/05/26'; %Date
timeString = '21:24:05'; %Time
% Convert date to a recognisable format
newDateString = strrep(DateString,'/','-');
%Join the date and time
joinInp = [newDateString ' ' timeString];
% Create the datetime object in the required format
t = datetime(joinInp,'InputFormat','yyyy-MM-dd HH:mm:ss')
t = datetime
26-May-2014 21:24:05
%Add 5 seconds to the created datetime object
tnew = t + seconds(5)
tnew = datetime
26-May-2014 21:24:10
  1 Comment
Arcot Manjunath Shreepal
Arcot Manjunath Shreepal on 5 Jul 2022
Thank you Garmit.
The output is as desired. How do I format the seconds to hold fractions upto 3 decimals. example: 21:24:10.345

Sign in to comment.

More Answers (2)

Karim on 5 Jul 2022
Note that it would be much easier to answer if you would have added exmaple data, anyhow you can use the following approach:
% random dates
DateStrings = ["2022-02-10","2021-04-20","2020-06-30"];
dates = datetime(DateStrings,'Format','yyyy-MM-dd')';
% random times
TimeStrings = ["04:21:30","07:19:21","13:51:33"];
times = datetime(TimeStrings,'Format','HH:mm:SS')';
% format both columns to yyyy-MM-dd HH:mm:SS for proper merging
dates = datetime(dates,'Format','yyyy-MM-dd HH:mm:SS');
times = datetime(times,'Format','yyyy-MM-dd HH:mm:SS');
% merge the dates and times
FullDataTime = dates+timeofday(times)
FullDataTime = 3×1 datetime array
2022-02-10 04:21:30 2021-04-20 07:19:21 2020-06-30 13:51:33

Eric Sofen
Eric Sofen on 5 Jul 2022
Here's another slightly different approach. There's no need to replace "/" with "-" for datetime to parse it. Duration can parse "timer" formats, then you can just add together the datetime and duration without needing to use timeofday.
DateStrings = ["2022/02/10","2021/04/20","2020/06/30"];
TimeStrings = ["04:21:30","07:19:21","13:51:33"];
d = datetime(DateStrings,'InputFormat','yyyy/MM/dd','Format', 'yyyy-MM-dd HH:mm:ss') + duration(TimeStrings,"InputFormat","hh:mm:ss")
d = 1×3 datetime array
2022-02-10 04:21:30 2021-04-20 07:19:21 2020-06-30 13:51:33




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!