Remove leading zeros from dates strings

13 visualizaciones (últimos 30 días)
Santiago Costantino
Santiago Costantino el 16 de Jul. de 2020
Comentada: Santiago Costantino el 17 de Jul. de 2020
Hello
I need to find the number of times a set of dates is included in a large text file. The problem is that the text file does not use leading zeros for months and days.
My code should look something like this:
myText=fileread('largeFile.txt');
dayOne=datetime('06/05/20','InputFormat','MM/dd/yy')
for it=1:10
numberOfTimes(it)=size(regexp(myText, datestr(dayOne+days(it), 'mm/dd/yy')), 2);
end
Thanks
  1 comentario
jonas
jonas el 16 de Jul. de 2020
Editada: jonas el 16 de Jul. de 2020
Why not simply count the dates with hist?

Iniciar sesión para comentar.

Respuesta aceptada

jonas
jonas el 16 de Jul. de 2020
You can use histogram() to count occurences, either with datetime or categoricals as input.
dates = datetime(2010,1,12) + rand(1000,1)*days(365);
% with categoricals
dates_cell = cellstr(datestr(dates,'mm/dd/yy'));
dates_cat = categorical(dates_cell);
H = histogram(dates_cat)
  3 comentarios
Walter Roberson
Walter Roberson el 17 de Jul. de 2020
You could use mm and then use regexp to strip out leading 0. But it hardly seems worth it considering that datetime() can handle the situation
dates = datetime(2010,1,12) + rand(10,1)*days(365);
dates.Format = 'M/d/yy';
dates_cat = categorical(cellstr(dates));
histogram(dates_cat);
Santiago Costantino
Santiago Costantino el 17 de Jul. de 2020
That does it. Thank you, Walter.

Iniciar sesión para comentar.

Más respuestas (1)

Steven Lord
Steven Lord el 16 de Jul. de 2020
Use M instead of MM and d instead of dd in the input format. According to the description of the Format property on the documentation page (which is referenced in the documentation for 'InputFormat'), M handles "Month, numerical using one or two digits" as opposed to MM which handles "Month, numerical using two digits".
>> datetime('07-16-2020', 'InputFormat', 'M-dd-yyyy')
ans =
datetime
16-Jul-2020
>> datetime('7-16-2020', 'InputFormat', 'M-dd-yyyy')
ans =
datetime
16-Jul-2020
  1 comentario
Santiago Costantino
Santiago Costantino el 16 de Jul. de 2020
Editada: Santiago Costantino el 16 de Jul. de 2020
Sorry, I guess my question was not clear enough.
The dates in the text file are written as '4/7/20' for April 7th 2020. I need to find the number of occurrences of each one of many different and consecutive dates in the text.

Iniciar sesión para comentar.

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