How do I convert tall array duration time vector to HH:mm:ss for merging with tall array datetime vector ?

11 vues (au cours des 30 derniers jours)
Need some help with this. I have a tall array date vector 'yyyy-MM-dd' of datetime format, and a tall array time vector 'HH:mm:ss.SSS' of duration format. How do I convert the duration vector to only HH:mm:ss (omitting the decimals) and then combine that with the date vector to get: 'yyyy-MM-dd HH:mm:ss' ?

Réponse acceptée

Chris
Chris le 21 Jan 2022
dates = tall(repmat(datetime(date),3,1))
dates = 3×1 tall datetime array 21-Jan-2022 21-Jan-2022 21-Jan-2022
times = tall(repmat(duration(15,12,1,345,'Format','hh:mm:ss.SSS'),3,1))
times = 3×1 tall duration array 15:12:01.345 15:12:01.345 15:12:01.345
times.Format = 'hh:mm:ss';
datetime([string(dates) + " " + string(times)])
ans = 3×1 tall datetime array 21-Jan-2022 15:12:01 21-Jan-2022 15:12:01 21-Jan-2022 15:12:01
  9 commentaires
Chris
Chris le 19 Avr 2022
Modifié(e) : Chris le 19 Avr 2022
Hello again, Douglas.
How about the following?
dates = datestr(theTable{:,1},'dd-mmm-yyyy');
durs = datestr(theTable{:,2},'HH:MM:SS');
merged = datetime(dates + " " + durs);
You could also shift the table around:
theTable.Var1 = merged;
theTable.Var2 = [];
Douglas Leaffer
Douglas Leaffer le 20 Avr 2022
Chris, that works fine. Thank you for your suggestions.

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 21 Jan 2022
perhaps
[h,m,s] = hms(DURATION_COLUMN);
DATETIME_COLUMN = TIME_COLUMN + duration(h,m,floor(s))
or perhaps
DATETIME_COLUMN = dateshift(TIME_COLUMN + DURATION_COLUMN, 'start', 'second')
if you do not have negative durations or negative datetimes, then adding first and then getting rid of the fractions of a second should give the same result.

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by