Conversion of dates to a different format
    1 Ansicht (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Damith
      
 am 6 Okt. 2015
  
    
    
    
    
    Kommentiert: Damith
      
 am 7 Okt. 2015
            Hi,
I need to convert 20110530 (2011 May 30) to 2011150 (which is the 150th day since January 01, 2011). How can i perform this task in MATLAB?
0 Kommentare
Akzeptierte Antwort
  Star Strider
      
      
 am 6 Okt. 2015
        
      Bearbeitet: Star Strider
      
      
 am 6 Okt. 2015
  
      The new date and time functions probably have built-in functions to do what you want, but in their absence, this works:
t_str = '20110530';
dn = datenum('20110530', 'yyyymmdd');
dnstart = datenum(dt_str(1:4), 'yyyy');             % Start Of 2011
dayofyear = dn-dnstart+1
Result = sprintf('%4s%03d', dt_str(1:4),dayofyear)
Result =
2011150
The +1 is necessary for ‘dayofyear’ because it computes the difference between 01-Jan-2011 and doesn’t include 01-Jan-2011.
EDIT — Added ‘Result’ assignment.
4 Kommentare
Weitere Antworten (1)
  Peter Perkins
    
 am 7 Okt. 2015
        In R2014b or later, use datetime.
Convert a yyyyMMdd string to a datetime:
>> d = datetime('20110530','Format','yyyyMMdd')
d = 
   20110530
Change its display format to show day of year:
>> d.Format = 'yyyyDDD' % includes a leading zero for dates before 10 Apr
d = 
   2011150
Get the day of year as a number:
>> day(d,'dayofyear')
ans =
   150
Convert to string (though you likely don't need to do this unless you're exporting to outside of MATLAB):
>> char(d) % or use cellstr for multiple dates
ans =
2011150
Convert a number in yyyyMMdd format to a datetime:
>> d = datetime(20110530,'ConvertFrom','yyyyMMdd')
d = 
   30-May-2011 00:00:00
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!


