Time difference in year between table datetime values and now

3 ビュー (過去 30 日間)
KAE
KAE 2024 年 5 月 22 日
回答済み: Steven Lord 2024 年 5 月 22 日
I have a vector of datetime values. I would like to get a vector of years elapsed between the datetime values and the present. How do I do this?
I tried
years(MyTable.BirthDate- now)
and got
Error using years
Input data must be a real, numeric array, or a duration array. Use YEAR to extract year numbers from a
datetime array.
I tried
year(MyTable.BirthDate- now)
but it rounded the values, and I would like the decimal difference. How can I get, for example, that one of the entries is 6.8 years old today?

採用された回答

Steven Lord
Steven Lord 2024 年 5 月 22 日
Don't use the now function. It returns a serial date number. Use datetime('now') (which returns a datetime) instead.
fiveYearsFromNow = datetime(2029, 5, 22)
fiveYearsFromNow = datetime
22-May-2029
N = datetime('now')
N = datetime
22-May-2024 21:18:40
y = years(fiveYearsFromNow-N)
y = 4.9970
But you may instead want to compute a calendarDuration instead of a duration. You can do this with the between function.
difference = between(N, fiveYearsFromNow) % Just shy of 5 years by timeofday(N)
difference = calendarDuration
4y 11mo 29d 2h 41m 19.759s
To correct for the fact that fiveYearsFromNow represents midnight on May 22, 2029 you can add timeofday(N) to it so fiveYearsFromNow and N represent the same amount of time past midnight on their respective days.
T = timeofday(N)
T = duration
21:18:40
difference = between(N, fiveYearsFromNow+T)
difference = calendarDuration
5y

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by