Commit 0ada255d authored by Johannes Bill's avatar Johannes Bill

operators finished

parent 3c476ee4
var start = new Date();
var stop = new Date(start.getTime() + 30 * 24 * 3600 * 1000);
console.log(stop);
//gibt zu betrachtenden Zeitraum an.
var epocheStart = new Date(2014, 5, 23, 0);
var epocheEnd = new Date(epocheStart.getTime() + 30 * 24 * 3600 * 1000);
function cyclicInterval(from, until, interval) {
var resultArray = [];
for(var offset = 0; until.getTime() + offset < stop.getTime(); offset += interval) {
for(var offset = 0; until.getTime() + offset < epocheEnd.getTime(); offset += interval) {
resultArray.push([new Date(from.getTime() + offset), new Date(until.getTime() + offset)]);
}
return resultArray;
......@@ -48,21 +48,54 @@ function andOperator(interval1, interval2) {
var start2 = interval2[j][0];
var end2 = interval2[j][1];
//detect overlap
if(end2 < start1)
if(end2 <= start1)
j++;
else if(end1 < start2)
else if(end1 <= start2)
i++;
else {
var newStart;
var newEnd;
if(end2 <= end1) {
j++;
newEnd = end2;
}
else {
i++;
newEnd = end1;
}
newStart = new Date(Math.max(start1, start2));
result.push([newStart, newEnd]);
}
}
return result;
}
function invert(interval) {
var result = [];
var start=epocheStart;
for(var i = 0; i < interval.length; i++) {
var end = interval[i][0];
if(start<end)
result.push([start, end]);
start = interval[i][1];
}
if(start < epocheEnd)
result.push([start, epocheEnd]);
return result;
}
function andNotOperator(interval1, interval2) {
interval2 = invert(interval2);
return andOperator(interval1, interval2);
}
var a = cyclicInterval(new Date(2014, 5, 23, 9), new Date(2014, 5, 23, 14), 7 * 24 * 3600 * 1000);
var b = cyclicInterval(new Date(2014, 5, 23, 13), new Date(2014, 5, 23, 18), 7 * 24 * 3600 * 1000);
var c = [[new Date(2014, 5, 23, 9), new Date(2014, 5, 30, 10)]];
var x = orOperator([a, b]);
x = removeOverlaps(x);
var x = andNotOperator(a, b);
console.log(x);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment