Filter löschen
Filter löschen

Combining two datetime columns into one

35 Ansichten (letzte 30 Tage)
Autumn P
Autumn P am 9 Mär. 2022
Kommentiert: Star Strider am 9 Mär. 2022
Hi
I am trying to combine two columns in a table that are formated as datetime. Date is in format 'mm/dd/yyy' and Time is in format 'HH:mm'
I have tried:
%Obs_data.Timestamp = Obs_data.Date + Obs_data.Time;
Error
Addition is not defined between datetime arrays.

Akzeptierte Antwort

Star Strider
Star Strider am 9 Mär. 2022
Another option is to use timeofday
Date = repmat(datetime('now','Format','MM/dd/yyyy'), 3, 1);
Time = datetime('now','Format','HH:mm','Timezone','UTC-7') + hours(0:2).';
Obs_data = table(Date,Time)
Obs_data = 3×2 table
Date Time __________ _____ 03/09/2022 08:54 03/09/2022 09:54 03/09/2022 10:54
Obs_data.Timestamp = Obs_data.Date + timeofday(Obs_data.Time)
Obs_data = 3×3 table
Date Time Timestamp __________ _____ __________ 03/09/2022 08:54 03/10/2022 03/09/2022 09:54 03/10/2022 03/09/2022 10:54 03/10/2022
Obs_data.Timestamp.Format = 'MM/dd/yyyy HH:mm'
Obs_data = 3×3 table
Date Time Timestamp __________ _____ ________________ 03/09/2022 08:54 03/10/2022 00:48 03/09/2022 09:54 03/10/2022 01:48 03/09/2022 10:54 03/10/2022 02:48
.
  2 Kommentare
Autumn P
Autumn P am 9 Mär. 2022
This worked, thank you!
Star Strider
Star Strider am 9 Mär. 2022
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

David Hill
David Hill am 9 Mär. 2022
d=[Obs_data.Date,' ',Obs_data.Time];
datetime(d,'InputFormat','MM/dd/yyyy HH:mm');
  2 Kommentare
Autumn P
Autumn P am 9 Mär. 2022
This did not work for me. I got the following error
Error using datetime/horzcat (line 1387)
Dimensions of arrays being concatenated are not consistent.
David Hill
David Hill am 9 Mär. 2022
d=[Obs_data.Date,repmat(' ',size(Obs_data.Date,1),1),Obs_data.Time];%assuming the dates and times are character arrays
%d=[char(Obs_data.Date),repmat(' ',size(Obs_data.Date,1),1),char(Obs_data.Time)];
%use above to convert to char arrays if necessary
datetime(d,'InputFormat','MM/dd/yyyy HH:mm');

Melden Sie sich an, um zu kommentieren.


Steven Lord
Steven Lord am 9 Mär. 2022
Why is your Time data stored as a datetime array? IMO it would make more sense for you to import or create it as a duration array.
I don't know how to add yesterday and tomorrow in a way that makes sense but I know how to add right now and 6 hours.
rightNow = datetime('now')
rightNow = datetime
09-Mar-2022 14:45:42
h = hours(6)
h = duration
6 hr
sixHoursFromNow = rightNow + h % datetime + duration = datetime
sixHoursFromNow = datetime
09-Mar-2022 20:45:42
If you're reading your time data as text (say from a file) you can convert that to a duration array pretty easily.
h2 = duration('01:23', 'InputFormat', 'hh:mm')
h2 = duration
01:23:00
anHour23MinutesFromNow = rightNow + h2
anHour23MinutesFromNow = datetime
09-Mar-2022 16:08:42

Kategorien

Mehr zu Dates and Time finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by