How can i generate month and year strings for Datetime vectors?

16 visualizaciones (últimos 30 días)
Steven Niggebrugge
Steven Niggebrugge el 19 de Jun. de 2016
Comentada: dpb el 16 de Dic. de 2017
How can i generate month and year concatenated strings for Datetime vectors?
E.g. i have vector ['01/Jan/2015';'01/Feb/2015'], how can i transform this into [201501; 201502] ?

Respuestas (4)

Star Strider
Star Strider el 20 de Jun. de 2016
This works:
DTV = datetime(['01/Jan/2015';'01/Feb/2015']); % Create ‘datetime’ Object
Out = fix(yyyymmdd(DTV)/100) % Desired Output
Out =
201501
201502
  3 comentarios
Star Strider
Star Strider el 20 de Jun. de 2016
‘Ours is not to reason why ...’
dpb
dpb el 20 de Jun. de 2016
Editada: dpb el 20 de Jun. de 2016
Man, what that must do to the JIT optimizer...no wonder the newer versions suffer in size/performance to incorporate such...
I've not found this documented; I did discover there's
dateType — Type of values in X
'datenum' | 'excel' | 'juliandate' | 'posixtime' | 'yyyymmdd' | ...
which would let the above fix() operation work w/o the reference if used the 'yyyymmdd' output type when creating the object. It doesn't say default there altho presume it would be 'datenum'???
ADDENDUM/ERRATUM
OK, I did a search and indeed TMW did actually write and include a function yyyymmdd -- who'd've'a thunk of such an animuhl...but, anyway, it's not so magical after all; "there's nothing to see here, please move on" just a momentary "huh?!" as hadn't seen the function reference and it's just bizzare enough I didn't think of it as an ordinary function name.

Iniciar sesión para comentar.


dpb
dpb el 19 de Jun. de 2016
Editada: dpb el 20 de Jun. de 2016
t = datetime(DateStrings,'InputFormat','dd/MMM/yyyy', ...
'Format','yyyyMM');
should do it (altho I don't have recent release to test...
OK, to actually convert to numerics,
str2num(datestr(datenum(['01/Jan/2015';'01/Feb/2015']),'YYYYmm'))
  2 comentarios
Steven Niggebrugge
Steven Niggebrugge el 20 de Jun. de 2016
Hi, thanks for this, but it won't do the trick. This will keep the format as DateTime, it only present the value in a different way (yyyyMM instead of dd-MM-yyyy). I was looking for a conversion into a string or number variable, with value (e.g.) '201502', so no DateTime format. Any ideas on this?
dpb
dpb el 16 de Dic. de 2017
While surely have solved the problem long ere now, a more recent comment brought the thread to attention--
The above is precisely what S Strider's answer does...

Iniciar sesión para comentar.


Shameer Parmar
Shameer Parmar el 20 de Jun. de 2016
Hello Steven,
here is the code..
dateArray = ['01/Jan/2015';'01/Feb/2015'];
for i=1:size(dateArray,1)
date = dateArray(i,:);
dateSplit = regexp(date,'/','split');
switch dateSplit{2}
case 'Jan'
month = '01';
case 'Feb'
month = '02';
case 'Mar'
month = '03';
.
.
.
.
case 'Dec'
month = '12';
end
newDate(i,:) = [dateSplit{3},month];
end
  2 comentarios
Ayodele Ogunkoya
Ayodele Ogunkoya el 7 de Dic. de 2017
Hello, I am new to matlab. I will like to create a monhtly loop. For example i will like to loop through each days of each months of the year so that i can save output of each month of the year
dpb
dpb el 16 de Dic. de 2017
Better form would be to create a new question with specifics for you precise situation rather than bury a comment in an old thread expecting an answer.
If you have an array of datetime values, simply iterate. If that's not the problem/question, see above comment... :)

Iniciar sesión para comentar.


Peter Perkins
Peter Perkins el 3 de Ag. de 2016
To create numbers use the Year and Month properties of a datetime
>> d = datetime+calmonths([1;2;3])
d =
03-Sep-2016 16:37:49
03-Oct-2016 16:37:49
03-Nov-2016 16:37:49
>> 100*d.Year + d.Month
ans =
201609
201610
201611
or use SS's suggestion:
>> fix(yyyymmdd(d)/100)
ans =
201609
201610
201611
To create strings you could just call num2str on that, or ...
>> cellstr(d,'yyyyMM')
ans =
'201609'
'201610'
'201611'

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by