Conversion of Gregorian date to decimal years
조회 수: 16 (최근 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일
편집: Will
2024년 11월 18일
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!