如何将日期时间转换为一年中的几天?
How to convert datetimes to days of the year?
假设 DT
是一个 datetime
类型的向量。我怎样才能得到他们一年中的日子?
这是一个近似值,但我找不到合适的函数:
month(DT) * 30 + day(DT)
您可以使用 datetime
和 between,如下所示:
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
假设 DT
是一个 datetime
类型的向量。我怎样才能得到他们一年中的日子?
这是一个近似值,但我找不到合适的函数:
month(DT) * 30 + day(DT)
您可以使用 datetime
和 between,如下所示:
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