how to read day of the year as datetime ?
    10 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    pruth
      
 am 25 Jul. 2020
  
    
    
    
    
    Beantwortet: Star Strider
      
      
 am 25 Jul. 2020
            I have vector of dates, it looks like this 
2019001
2019002
.
.
.
2019364
2019365
2019 is year and next number is day of the year. 
anybody tell me how to use datenum or datetime here ! 
I have around 3 years of dara. 
0 Kommentare
Akzeptierte Antwort
  per isakson
      
      
 am 25 Jul. 2020
        
      Bearbeitet: per isakson
      
      
 am 25 Jul. 2020
  
      >> chr = sprintf( '%d', 2019364 );
>> sdn = datenum(str2double(chr(1:4)),1,0)+str2double(chr(5:end));
>> datetime( sdn, 'ConvertFrom', 'datenum' )
ans = 
  datetime
   30-Dec-2019 00:00:00
>> 
Added later
%%
d = [ 2019001; 2019002; 2019364; 2019365 ];
%%
chr = num2str( d );
chr = strjust( chr, 'left' );
sdn = datenum( str2num(chr(:,1:4)), 1, 0 ) + str2num(chr(:,5:end));
dt  = datetime( sdn, 'ConvertFrom', 'datenum' )
Outputs
dt = 
  4×1 datetime array
   01-Jan-2019 00:00:00
   02-Jan-2019 00:00:00
   30-Dec-2019 00:00:00
   31-Dec-2019 00:00:00
0 Kommentare
Weitere Antworten (2)
  madhan ravi
      
      
 am 25 Jul. 2020
         v = regexprep(""+vector,'(\d{4})(\d+)','00/$2/$1');
 Wanted =  datetime(datestr(v))
2 Kommentare
  madhan ravi
      
      
 am 25 Jul. 2020
				 Days_in_a_year = double(regexprep(v, '(\d+)/(\d+)/(\d+)', '$2'))
  madhan ravi
      
      
 am 25 Jul. 2020
				For older versions:
v = regexprep(sprintfc('%d',vector),'(\d{4})(\d+)','00/$2/$1'); % sprintfc() undocumented
Wanted =  datetime(datestr(v))
 Days_in_a_year = str2double(regexprep(v, '(\d+)/(\d+)/(\d+)', '$2'));
  Star Strider
      
      
 am 25 Jul. 2020
        Another approach: 
ydv = [2019001
       2019002
       2019364
       2019365];                                        % ‘YearDay’ Vector
Years_Days = datetime(num2str(fix(ydv/1000)), 'InputFormat','yyyy') + caldays(rem(ydv,1000)-1)
producing: 
Years_Days = 
  4×1 datetime array
   01-Jan-2019
   02-Jan-2019
   30-Dec-2019
   31-Dec-2019
Use the 'Format' name-value pair to get the desired output format.  The easiest way to do that (for one example) is simply: 
Years_Days.Format = 'yyyy-MM-dd';
to get: 
Years_Days = 
  4×1 datetime array
   2019-01-01
   2019-01-02
   2019-12-30
   2019-12-31
.
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Dates and Time finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



