# Add next and previous business date of each date in array row

5 views (last 30 days)
chiefjia on 8 Oct 2021
Commented: Chetan Bhavsar on 9 Oct 2021
Dear MATLAB experts,
I have a table named 'events', which contains many unique dates and I want to get the previous and next business dates of each date (row) included in this table. If one row were t, then I would like to get t-1 and t+1 (in business days), without these newly created rows replacing already existing ones, but creating one new row for each one of the newly created dates. I have thought of the code below, but it doesn't work so far:
% Create array
eventsWindow3 = table2array(events);
% Iterate through previous and next business date
for i=1:length(eventsWindow3)
eventsWindow3(i-1,:) = busdate(eventsWindow3(i,:), -1);
eventsWindow3(i+1,:) = busdate(eventsWindow3(i,:), 1);
end
You can find 'events' attached to this table.

Chetan Bhavsar on 8 Oct 2021
Edited: Chetan Bhavsar on 8 Oct 2021
@chiefjia will this work?
% Create array
EventsArray = [datetime('today') datetime('yesterday') datetime('tomorrow')]
newArray = [];
% Iterate through previous and next business date
for i=1:length(EventsArray)
newArray{end+1} = EventsArray(i)-1;
newArray{end+1} = EventsArray(i);
newArray{end+1} = EventsArray(i)+1;
end
newArray
EventsArray =
1×3 datetime array
08-Oct-2021 07-Oct-2021 09-Oct-2021
newArray =
1×9 cell array
Columns 1 through 5
{[07-Oct-2021 00:00:00]} {[08-Oct-2021]} {[09-Oct-2021 00:00:00]} {[06-Oct-2021 00:00:00]} {[07-Oct-2021]}
Columns 6 through 9
{[08-Oct-2021 00:00:00]} {[08-Oct-2021 00:00:00]} {[09-Oct-2021]} {[10-Oct-2021 00:00:00]}
##### 2 CommentsShowHide 1 older comment
Chetan Bhavsar on 9 Oct 2021
Nice to see you worked it out.

KSSV on 8 Oct 2021
d = datetime('today')
d = datetime
08-Oct-2021
d0 = d-day(1)
d0 = datetime
07-Oct-2021
d1 = d+day(1)
d1 = datetime
09-Oct-2021
chiefjia on 8 Oct 2021
Yes, I am running a loop for each event, which is a row of the array eventsWindow3, but still I can't apply your solution