【发布时间】:2017-11-27 04:40:03
【问题描述】:
我想知道是否有人知道如何计算MATLAB 中时间戳之间的营业时间或分钟?假设我有两个时间戳:
started: 22/06/2017 18:00
ended: 26/06/2017 09:00
我想计算08:00 到17:00 之间的分钟数,不包括周末。应该是600 分钟。
有谁知道如何编写MATLAB 函数来做到这一点?
我也可以使用python 和/或R。
新请求:
如果每个工作日的工作时间更改为9:30-11:30 和13:00-15:00。不知道有没有人知道怎么弄?
提前致谢!
更新:
@gnovice 我对您的原始代码进行了一些更改。它适用于使用两个单独的范围!想知道你对此有何感想?
function workMins = work_time(startTime, endTime)
dateBlock = repmat((dateshift(startTime, 'start', 'day'):...
dateshift(endTime, 'start', 'day')).', 1, 4); %'
dateBlock(:, 1) = dateBlock(:, 1)+hours(9)+minutes(30);
dateBlock(:, 2) = dateBlock(:, 2)+hours(11)+minutes(30);
dateBlock(:, 3) = dateBlock(:, 3)+hours(13)+minutes(00);
dateBlock(:, 4) = dateBlock(:, 4)+hours(15);
dateBlock(1, 1) = max(dateBlock(1, 1), startTime);
dateBlock(1, 3) = max(dateBlock(1, 3), startTime);
dateBlock(end, 2) = min(dateBlock(end, 2), endTime);
dateBlock(end, 4) = min(dateBlock(end, 4), endTime);
dateBlock((datestr(dateBlock(:, 1), 'd') == 'S'), :) = [];
workMins = max(diff(dateBlock, 1, 2), 0);
workMins(:,2) = [];
workMins = minutes(sum(workMins(:)));
end
【问题讨论】:
-
除非您有 MATLAB 的金融工具箱(或第三方库),否则在 Python 或 R 中执行此操作可能更容易。
-
你知道如何在 Python 或 R 中做到这一点吗?
-
从技术上讲,您可以自己编写。应该不会太难