How do I convert a decimal number of months to a datetime format?
210 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a vector of several decimal values that represent a number of months after Jan 01, 2020.
(e.g. [9.545563 22.212227])
I need to convert these to dates. I'm unsure of how to do this. The ultimate goal of this is to output the dates within an fprintf statement.
(e.g. "Summer 2021/2022 begins on the 3rd of Dec at 3:51:14 and concludes on the 24th of Feb at 22:03:52")
3 comentarios
Respuestas (2)
Stephen23
el 6 de Oct. de 2024
Editada: Stephen23
el 6 de Oct. de 2024
"The only way I can think of is manually converting by identifying the length of the month the offset represents."
Let MATLAB do that for you:
V = [9.545563,22.212227];
W = fix(V);
X = mod(V,1);
A = datetime(2020,W+1,1);
D = A + X.*(datetime(2020,W+2,1)-A)
For most of those date formats you could download my function DATESTR8601:
[y,d,m,t] = datestr8601(D(1),'y','d*','mmm','*HMS')
[y,d,m,t] = datestr8601(D(2),'y','d*','mmm','*HMS')
0 comentarios
Walter Roberson
el 5 de Oct. de 2024
decmonths = [9.545563 22.212227];
offsets = calmonths(floor(decmonths)) + days(decmonths - floor(decmonths))
base = datetime('Jan-01, 2020', 'InputFormat', 'MMM-dd, yyyy')
base + offsets
Getting the correct output format of "3rd" and "24th" is more difficult. There are no standard routines that will correctly produce that format. (Perhaps there are Java routines for it; I do not know.)
4 comentarios
Walter Roberson
el 5 de Oct. de 2024
@Voss is right, I messed up the fractions of a month. Unfortunately, I am having trouble coming up with the correct formula .
Ver también
Categorías
Más información sobre Dates and Time en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!