Как преобразовать время данных в дни года? - PullRequest
1 голос
/ 01 декабря 2019

Предположим, DT - это вектор типа datetime. Как мне узнать их дни в году?

Это приблизительное значение, но я не могу найти нужную функцию:

month(DT) * 30 + day(DT)

Ответы [ 2 ]

4 голосов
/ 01 декабря 2019

Вы можете использовать функцию Matlab day с вектором элементов datetime (см. doc )

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

day( t, 'dayofyear')

, который даст число дня года, изОт 1 до 365 или 366, в зависимости от года.

ans =

334 335 336

1 голос
/ 01 декабря 2019

Вы можете использовать datetime и между следующим образом:

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 может потребовать цикла for из-за использования datetime(d.Year, 1, 1).

...