How to find the day number of any year from a date?

170 次查看(过去 30 天)
I am very new in programming and therefore it is probably a novice's question. I have to write a script that takes a number of day(dd), month(mm) and year(yyyy)values arranged in three separate columns of a MATLAB variable and gives the day number of the year(e.g. for 03 March 2012, 31+29+3=63) as output.
  2 个评论
Md. Golam Mostafa
Md. Golam Mostafa 2015-7-23
I have a variable in the workspace containing all the data. Column 1 stores the day(dd), column 2 month (mm) and column 3 year (yyyy). I need to find the day number (for example, for 02/01/2012 day number=2, for 03/03/2012 day number=Jan (31)+ Feb (29)+ Mar (03)=63). The day number is 63. But for 03/03/2013 day number=Jan (31)+ Feb (28)+ Mar (03)=62). I need output of each date in a separate variable.

请先登录,再进行评论。

采纳的回答

Peter Perkins
Peter Perkins 2015-7-23
If you are using R2014b or later, the datetime data type allows you to compute the day of year using the day function:
>> x = [2012 1 2; 2012 3 3; 2013 3 3]
x =
2012 1 2
2012 3 3
2013 3 3
>> d = datetime(x)
d =
02-Jan-2012
03-Mar-2012
03-Mar-2013
>> day(d,'dayofyear')
ans =
2
63
62
  2 个评论
Md. Golam Mostafa
Md. Golam Mostafa 2015-7-24
I am running this code but it shows an error of this kind.
??? Undefined function or method 'datetime' for input arguments of type 'double'.
Error in ==> testdaynum1 at 32 d = datetime(YMD);
What is the solution?
Peter Perkins
Peter Perkins 2015-7-24
Presumably, you are not "using R2014b or later". datetime did not exist prior to that.

请先登录,再进行评论。

更多回答(3 个)

Andrei Bobrov
Andrei Bobrov 2015-7-24
x = [2012 1 2; 2012 3 3; 2013 3 3];
d = datenum(x);
out = d - datenum(year(d),1,1) + 1;

Jos (10584)
Jos (10584) 2015-7-23
help datenum
and then use simple subtraction

Sergey Kostrukov
Sergey Kostrukov 2022-2-12
编辑:Sergey Kostrukov 2022-2-12
Fractional value of days since biginning of the year (0-364.9999):
daysFrac = days(currentTime - datetime(year(currentTime), 1, 1, TimeZone=currentTime.TimeZone))
To get the whole number starting from 1 (i.e. day index):
floor(daysFrac + 1)

类别

Help CenterFile Exchange 中查找有关 Dates and Time 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by