decimal day
7 views (last 30 days)
Show older comments
Any ideas of how to convert year, day of year(1:365), and time (i.e. 17:59 is given as 1759) to decimal day.
I've already changed the time into hours and minutes so now have: year; day(1:365); hour(1:24); min(1:60) But how would i go about converting this to decimal day?
thanks
0 Comments
Answers (5)
Walter Roberson
on 4 Nov 2011
Not taking leap-years and leap seconds in to account:
(year * 365 + day) + (hour / 24 + minute / (24*60))
0 Comments
Fangjun Jiang
on 4 Nov 2011
Year=2011;
Day=250;
Hour=23;
Minute=35;
D=datenum(Year,1,1)+Day-1;
[Year,Month,Day]=datevec(D);
D=datenum(Year,Month,Day,Hour,Minute,0)
1 Comment
Andrei Bobrov
on 4 Nov 2011
for array d
d =[ 2002 190 17 16
2003 345 7 14
2004 233 17 41
2003 350 17 51
2007 88 2 21];
out = datenum([d(:,1), zeros(size(d,1),2)])+d(:,2)+sum(bsxfun(@rdivide,d(:,3:end),[24 60]),2);
0 Comments
ricco
on 4 Nov 2011
1 Comment
Fangjun Jiang
on 4 Nov 2011
That is the number of days since Jan 0, year 0000. See the help document of datenum, datestr, datevec. Also, try the following
datestr(0)
datestr(1)
now
datestr(now)
Moyo Ajayi
on 24 Oct 2019
A simple way to do this is by using dec_doy. You will not have to worry about leap year and instead. I am still working on formatting the repository, which will have more useful functions. However, for now, it should be helpful for your problem. All you need to do before hand is convert your dates into datetime objects by using the datetime() function.
Example:
>> dt = datetime(2019, 10, 23, 21, 50, 05, 123);
>> decimal_doy = dec_doy(dt)
decimal_doy =
296.9098
0 Comments
See Also
Categories
Find more on Dates and Time in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!