Conversion of Gregorian date to decimal years
22 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have time series given in gregorian time in seconds since 1992-01-01 00:00:00'. For example; 23853938,23853939...
How can i convert this gregorian time seconds to decimal years like 2010.544, 2010.545...
0 件のコメント
採用された回答
Walter Roberson
2021 年 5 月 10 日
basetime = datetime('1992-01-01 00:00');
gtime = 23853938
t1 = basetime + seconds(gtime)
t2 = dateshift(t1, 'start', 'year')
t3 = dateshift(t1, 'end', 'year')
fy = year(t1) + (t1-t2)./(t3-t2)
4 件のコメント
Walter Roberson
2021 年 5 月 10 日
decyear() appears to require the Areospace Toolbox.
Also, setting the Format is not required for decyear()
Will
2024 年 11 月 18 日 16:39
編集済み: Will
2024 年 11 月 18 日 16:44
This won't match decyear() as (t3-t2) is not the exact length of the year. decyear() calculates the fractional year as (t1-t2)/(number of hours in year or leap year).
Without the aerospace toolbox you can use:
t3 = t2 + calyears(1);
fy = year(t1) + (t1-t2)./(t3-t2)
or with dateshift(), shift to the equivalent time in the year before or after to get the correct length duration, e.g.
t3 = dateshift(t1, 'end', 'year')
t4 = dateshift(datetime(year(t1)-1,1,1), 'end' ,'year');
fy = year(t1) + (t1-t2)./(t3-t4)
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Dates and Time についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!