Remove leading zeros from dates strings
2 次查看(过去 30 天)
显示 更早的评论
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
采纳的回答
jonas
2020-7-16
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 个评论
Walter Roberson
2020-7-17
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);
更多回答(1 个)
Steven Lord
2020-7-16
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!