Conversion of dates to a different format

5 visualizaciones (últimos 30 días)
Damith
Damith el 6 de Oct. de 2015
Comentada: Damith el 7 de Oct. de 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?

Respuesta aceptada

Star Strider
Star Strider el 6 de Oct. de 2015
Editada: Star Strider el 6 de Oct. de 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 comentarios
Damith
Damith el 6 de Oct. de 2015
Thanks again.
Star Strider
Star Strider el 6 de Oct. de 2015
As always, my pleasure.

Iniciar sesión para comentar.

Más respuestas (2)

Peter Perkins
Peter Perkins el 7 de Oct. de 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

Stephen23
Stephen23 el 6 de Oct. de 2015
This is very easy using my FEX submissions datenum8601 and datestr8601:
>> X = datenum8601('20110530');
>> datestr8601(X,'yn')
ans =
2011150

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by