如何将日期时间转换为一年中的几天?

How to convert datetimes to days of the year?

假设 DT 是一个 datetime 类型的向量。我怎样才能得到他们一年中的日子?

这是一个近似值,但我找不到合适的函数:

month(DT) * 30 + day(DT)

您可以使用 datetimebetween,如下所示:

d = datetime; %Read current time (just for the example).  
jan_1st = datetime(d.Year, 1, 1); %Create datetime object of January fist in year of d.  
day_in_year = between(jan_1st, d, 'Days'); %Get day in year.  

结果是一个 calendarDuration 对象:334d

要转换为标量,请使用 split

day_in_year = split(day_in_year, 'Days') + 1; % Add one in case the first day of the year is day 1 and not 0

由于 datetime(d.Year, 1, 1) 的使用,将解决方案应用于 datetime 的向量可能需要 for 循环。

您可以将 Matlab 的 day 函数与日期时间元素的向量一起使用(参见 doc

t = [datetime('yesterday');datetime('today');datetime('tomorrow')]; % vector of datetime

day( t, 'dayofyear')

这将给出年号,从 1 到 365 或 366,具体取决于年份。

ans =

334 335 336