겹친 시간은 한 번만 세고, 비어 있는 시간은 더하지 않습니다
09:00~12:00과 11:00~14:00을 그대로 더하면 6시간입니다. 그러나 11:00~12:00은 두 기록에 모두 들어 있어 두 번 셌습니다. 그 1시간을 한 번만 세면 두 기록이 실제로 차지한 시간은 09:00~14:00, 곧 5시간입니다. 수학에서는 이 값을 구간의 합집합 길이라고 부릅니다.
계산기 첫 화면의 예시는 네 구간입니다. 09:00~12:00, 11:00~14:00, 13:30~15:00, 16:00~17:30을 더하면 단순 합계는 9시간이지만, 11:00~12:00과 13:30~14:00이 겹쳐 1시간 30분을 두 번 셌습니다. 그래서 겹친 시간을 뺀 총시간은 7시간 30분입니다. 15:00~16:00은 어느 구간에도 없으므로 처음 시작부터 마지막 끝까지인 8시간 30분과도 다릅니다. 타임라인의 막대에 그은 빗금이 두 번 센 부분이고, 맨 아래 ‘합친 결과’ 줄의 끊긴 자리가 빈 시간입니다.
겹친 시간을 빼야 하는 때
여러 기록이 같은 시각을 함께 차지하면, 무엇을 알고 싶은지에 따라 더하는 방법이 달라집니다. ‘그 시간대가 몇 시간 채워졌는가’를 묻는다면 겹친 시간은 한 번만 세야 합니다.
- 회의실·장비가 실제로 쓰인 시간: 예약이 서로 겹쳐 잡혀 있어도 방이 쓰인 시간은 한 번만 흐릅니다. 하루 이용률을 낼 때는 겹친 시간을 뺀 총시간을 운영 시간으로 나눕니다.
- 여러 앱에 나뉜 공부·작업 기록: 타이머 앱과 일정 앱에 같은 시간을 따로 남겼다면 단순 합계는 실제보다 깁니다. 겹친 곳 목록을 보면 어느 기록이 중복인지 바로 찾을 수 있습니다.
- 돌봄·당번처럼 비는 시간이 없어야 하는 일: 여러 사람이 나눠 맡은 시간을 합치면 ‘빈 시간’이 곧 아무도 맡지 않은 시간입니다. 첫 화면 예시라면 15:00~16:00이 비어 있습니다.
- 통화·영상·접속 기록을 합칠 때: 같은 시각에 여러 개가 겹쳐 있던 기록을 하나의 이용 시간으로 정리합니다. 동시에 가장 많이 겹친 개수와 그 시각도 함께 나옵니다.
반대로 두 사람이 같은 시간에 각각 1시간씩 일한 작업량은 2시간입니다. 사람마다 들인 시간(인시)을 더하려면 겹친 시간을 빼지 말고 결과의 ‘단순 합계’를 보세요.
계산 방법
- 시각을 분으로 바꿉니다. 09:30은 9 × 60 + 30 = 570분입니다. 이렇게 바꾸면 구간 길이는 끝에서 시작을 뺀 값이 됩니다.
- 끝이 시작보다 이르면 하루를 더합니다. 22:00~02:00은 120 + 1,440 − 1,320 = 240분, 4시간입니다. 끝이 00:00이면 그날 24:00에 끝난 것으로 봅니다.
- 시간축을 경계 시각마다 자릅니다. 모든 구간의 시작과 끝을 순서대로 늘어놓고, 그 사이 조각마다 몇 개의 구간이 덮고 있는지 셉니다.
- 하나라도 덮은 조각의 길이를 더합니다. 이것이 겹친 시간을 뺀 총시간입니다. 두 개 이상이 덮은 조각만 더하면 ‘겹친 시간대’가 됩니다.
- 두 번 센 시간을 구합니다. k개가 덮은 조각은 단순 합계에 k번 들어갔으므로 k − 1번을 빼야 합니다. 이 값을 모두 더한 것이 ‘두 번 센 시간’이며, 단순 합계에서 총시간을 뺀 값과 같습니다.
총시간 = Σ 조각 길이 (k ≥ 1) · 두 번 센 시간 = Σ (k − 1) × 조각 길이 = 단순 합계 − 총시간
끝과 시작이 맞닿은 점은 길이가 없으므로 겹침이 아닙니다. 09:00~12:00과 12:00~14:00은 합친 결과에서 09:00~14:00 한 덩어리로 보이지만, 두 번 센 시간은 0분입니다.
두 구간이 놓이는 13가지 경우
두 시간 구간의 위치 관계는 Allen(1983)이 정리한 13가지 가운데 하나입니다. 서로 짝을 이루는 6쌍(앞섬·뒤따름, 맞닿음·이어받음, 일부 겹침·겹쳐짐, 같이 시작하며 짧음·같이 시작하며 긺, 안에 들어감·품음, 같이 끝나며 짧음·같이 끝나며 긺)과 ‘같음’ 하나입니다. W3C 시간 온톨로지도 이 13가지를 정의하고, 몇 관계를 묶은 intervalIn·intervalDisjoint를 더 둡니다. 짝은 두 구간의 이름만 바꾼 것이라 결과가 같으므로, 아래 표는 A = 09:00~12:00에 B를 붙이는 7가지만 보입니다.
| 관계 | B | 두 번 센 시간 | 총시간 | |
|---|---|---|---|---|
| 앞섬(떨어짐) | 13:00~14:00 | 0분 | 4시간 | 넣어 보기 |
| 맞닿음 | 12:00~14:00 | 0분 | 5시간 | 넣어 보기 |
| 일부 겹침 | 11:00~14:00 | 1시간 | 5시간 | 넣어 보기 |
| 같이 시작 | 09:00~10:00 | 1시간 | 3시간 | 넣어 보기 |
| 안에 들어감 | 10:00~11:00 | 1시간 | 3시간 | 넣어 보기 |
| 같이 끝남 | 11:00~12:00 | 1시간 | 3시간 | 넣어 보기 |
| 같음 | 09:00~12:00 | 3시간 | 3시간 | 넣어 보기 |
B가 A 안에 완전히 들어가면 B를 몇 개 더 넣어도 총시간은 3시간 그대로입니다. 같은 기록을 두 번 넣은 ‘같음’은 단순 합계 6시간에서 3시간을 통째로 뺍니다.
세 구간이 겹치면 두 번 센 시간이 더 길어집니다
09:00~12:00, 10:00~13:00, 11:00~14:00은 각각 3시간이라 단순 합계가 9시간이고, 합친 구간은 09:00~14:00, 5시간입니다. 두 개 이상이 겹친 시간대는 10:00~13:00의 3시간인데, 두 번 센 시간은 4시간입니다. 11:00~12:00은 세 구간이 모두 덮어 세 번 더했으므로 두 번을 빼야 하기 때문입니다. 아래 표처럼 조각마다 나눠 보면 차이가 보입니다.
| 조각 | 덮은 구간 수 | 단순 합계에 들어간 시간 | 빼야 할 시간 |
|---|---|---|---|
| 09:00~10:00 | 1 | 1시간 | 0분 |
| 10:00~11:00 | 2 | 2시간 | 1시간 |
| 11:00~12:00 | 3 | 3시간 | 2시간 |
| 12:00~13:00 | 2 | 2시간 | 1시간 |
| 13:00~14:00 | 1 | 1시간 | 0분 |
| 합계 | 9시간 | 4시간 |
이것은 포함·배제 원리와 같은 이야기입니다. 세 구간 A·B·C의 합집합은 A + B + C에서 둘씩 겹친 부분(A∩B, B∩C, A∩C)을 빼고 셋이 모두 겹친 부분(A∩B∩C)을 다시 더한 값입니다. 9 − (2 + 2 + 1) + 1 = 5시간으로 같은 답이 나옵니다. 계산기 타임라인의 ‘겹친 정도’ 줄은 이 조각별 개수를 계단 높이로 그린 것입니다.
자정을 넘는 기록과 여러 날 기록
끝 시각이 시작보다 이르면 다음 날에 끝난 것으로 계산합니다. 22:00~02:00은 따로 고르지 않아도 4시간이며, 길이 칸에 ‘다음 날 끝’이 붙습니다. 문제는 자정 뒤에 시작한 기록입니다. 같은 밤의 01:00~03:00을 그냥 넣으면 첫날 새벽 1시로 읽혀 22:00~02:00과 겹치지 않습니다.
| 입력 | 총시간 | 두 번 센 시간 | |
|---|---|---|---|
| 1일째 22:00~02:00 · 2일째 01:00~03:00 | 5시간 | 1시간 | 넣어 보기 |
| 1일째 22:00~02:00 · 1일째 01:00~03:00 | 6시간 | 0분 | 넣어 보기 |
| 09:00~09:00 · 24시간으로 세기 | 24시간 | 0분 | 넣어 보기 |
자정 뒤에 시작한 구간이 있으면 타임라인 위의 ‘여러 날 기록’을 켜고 그 구간의 시작 날을 2일째로 고르세요. 시작 날은 1일째부터 7일째까지 고를 수 있어, 며칠에 걸친 당직이나 행사 기록도 한 번에 합칠 수 있습니다. 시작과 끝이 같은 시각이면 0분짜리 기록인지 꼬박 하루인지 알 수 없어 계산을 멈춥니다. 24시간 당직처럼 다음 날 같은 시각에 끝났다면 그 줄의 ‘24시간으로 세기’를 누르세요.
엑셀·구글 시트로 같은 값을 구하는 방법
기록이 표에 이미 있다면 시작 시각 순으로 정렬한 뒤 ‘지금까지 가장 늦은 끝’을 한 열에 이어 적으면 됩니다. 각 행은 그 끝보다 늦게 남는 부분만 새로 더합니다. A열에 시작, B열에 끝을 넣고 2행부터 시작한다고 하면 식은 다음과 같습니다.
| 열 | 뜻 | 2행 | 3행부터(아래로 채우기) |
|---|---|---|---|
| C | 자정을 넘긴 끝 보정 | =IF(B2<A2,B2+1,B2) | =IF(B3<A3,B3+1,B3) |
| D | 지금까지 가장 늦은 끝 | =C2 | =MAX(D2,C3) |
| E | 새로 더한 시간 | =C2-A2 | =MAX(0,C3-MAX(A3,D2)) |
E열의 합계가 겹친 시간을 뺀 총시간입니다. 엑셀은 하루를 1로 다루므로 B + 1은 다음 날 같은 시각입니다. 합계 칸의 셀 서식을 [h]:mm으로 바꾸면 7:30처럼 시간과 분으로 보이고, 합계가 24시간을 넘어도 0시로 돌아가지 않습니다. 첫 화면 예시를 넣으면 다음과 같습니다.
| 행 | A 시작 | B 끝 | D 가장 늦은 끝 | E 새로 더한 시간 |
|---|---|---|---|---|
| 2 | 9:00 | 12:00 | 12:00 | 3:00 |
| 3 | 11:00 | 14:00 | 14:00 | 2:00 |
| 4 | 13:30 | 15:00 | 15:00 | 1:00 |
| 5 | 16:00 | 17:30 | 17:30 | 1:30 |
| 합계 | 7:30 |
정렬을 빼먹으면 앞 행의 끝이 뒤 행보다 늦어 결과가 틀어지니, 데이터 메뉴에서 A열 오름차순으로 정렬하세요. 여러 날짜에 걸친 기록은 A·B 칸에 날짜와 시각을 함께 넣으면 C열 보정 없이 같은 식으로 계산됩니다.
자주 틀리는 계산
- 처음 시작부터 마지막 끝까지를 총시간으로 쓰기: 09:00~12:00과 13:00~14:00은 4시간입니다. 09:00~14:00의 5시간으로 계산하면 아무 기록도 없는 12:00~13:00이 들어갑니다.
- 단순 합계를 그대로 쓰기: 겹친 기록이 있는데 더하기만 하면 실제보다 길어집니다. 결과의 두 번 센 시간이 0분이 아니라면 어느 기록이 겹쳤는지 먼저 확인하세요.
- 맞닿은 구간을 겹친 것으로 보기: 12:00에 끝나고 12:00에 시작한 두 기록은 1분도 겹치지 않습니다.
- 휴식을 새 구간으로 넣기: 09:00~18:00에서 점심 12:00~13:00을 빼려고 점심을 한 줄 더 넣으면 오히려 겹친 구간이 됩니다. 09:00~12:00과 13:00~18:00 두 줄로 나눠 넣으세요.
- 소수 시간을 시·분으로 읽기: 7.5시간은 7시간 50분이 아니라 7시간 30분입니다. 다른 표에 옮길 때는 반올림하지 않은 분(450분)을 쓰는 편이 안전합니다.
한계와 주의
- 시각은 1분 단위이고 구간은 20개까지 넣을 수 있습니다. 초 단위 기록은 분으로 맞춰 넣으세요.
- 한 구간은 24시간을 넘을 수 없습니다. 더 긴 기록은 날짜를 나눠 두 줄로 넣으세요. 시작 날은 7일째까지입니다.
- 하루를 항상 24시간으로 봅니다. 서머타임이 바뀌는 날이나 시간대가 다른 기록은 같은 시간대로 바꿔 넣어야 합니다.
- 이 값은 입력한 구간의 길이일 뿐, 근로시간·휴게시간 인정이나 급여·요금 산정 기준이 아닙니다. 그런 계산에는 해당 규정이 정한 기준을 따로 확인하세요.
- 입력값은 이 브라우저 안에서만 계산하고 서버로 보내지 않습니다. ‘링크 복사’를 누를 때만 구간이 주소에 담깁니다.
출처
- 01Allen, J. F. (1983). Maintaining knowledge about temporal intervals. Communications of the ACM, 26(11), 832–843두 시간 구간의 관계 13가지(앞섬·맞닿음·겹침·시작·안에 들어감·끝남·같음과 그 반대)
- 02W3C Time Ontology in OWL, 3.1 Topological Temporal Relations후보 권고안 초안(2022-11-15), Allen의 13가지 구간 관계를 intervalMeets·intervalOverlaps 등으로 정의
- 03Microsoft 지원: 숫자 서식을 날짜 또는 시간으로 지정경과 시간(시간) 서식 코드 [h]:mm
- 04NIST SP 811, 5장 SI 밖의 단위표 6: 1분 = 60초, 1시간 = 60분, 1일 = 24시간
- 05WHATWG HTML 표준: 시각 입력(type=time)입력값은 24시간제 ‘시:분’ 문자열, 화면 표기는 기기 설정을 따를 수 있음
자주 묻는 질문
09:00~12:00과 11:00~14:00은 모두 몇 시간인가요?
같은 날의 기록이라면 겹친 시간을 뺀 총시간은 5시간입니다. 두 구간을 그대로 더한 단순 합계는 6시간이고, 두 번 센 11:00~12:00의 1시간을 뺍니다.
두 번 센 시간과 겹친 시간대는 어떻게 다른가요?
겹친 시간대는 두 개 이상이 덮은 시간의 길이이고, 두 번 센 시간은 단순 합계에서 빼야 하는 시간입니다. 09:00~12:00·10:00~13:00·11:00~14:00은 겹친 시간대가 3시간이지만 11:00~12:00을 세 번 더했으므로 두 번 센 시간은 4시간입니다.
12시에 끝나는 구간과 12시에 시작하는 구간도 겹치나요?
겹치지 않습니다. 맞닿은 시각에는 길이가 없어서 09:00~12:00과 12:00~14:00은 총 5시간이고 두 번 센 시간은 0분입니다. 합친 결과에서는 09:00~14:00 한 덩어리로 보입니다.
밤 22:00부터 새벽 02:00까지는 어떻게 넣나요?
그대로 22:00과 02:00을 넣으면 됩니다. 끝이 시작보다 이르면 다음 날 끝난 것으로 보고 4시간으로 계산합니다. 같은 밤 자정 뒤에 시작한 01:00~03:00 같은 기록은 ‘여러 날 기록’을 켜고 시작 날을 2일째로 고르세요.
시작과 끝이 같은 09:00~09:00은 24시간인가요?
그대로는 계산하지 않습니다. 0분짜리 기록인지 하루 종일인지 알 수 없기 때문입니다. 다음 날 같은 시각에 끝난 기록이라면 그 줄에 나오는 ‘24시간으로 세기’를 누르세요.
구간 사이에 빈 시간도 총시간에 들어가나요?
들어가지 않습니다. 09:00~12:00과 13:00~14:00은 총 4시간이고, 12:00~13:00의 1시간은 ‘빈 시간’ 칸에 따로 나옵니다. 처음 시작부터 마지막 끝까지의 길이는 ‘처음~끝’ 칸에서 볼 수 있습니다.
엑셀에서도 겹친 시간을 빼고 합계를 구할 수 있나요?
시작 시각 순으로 정렬한 뒤, 지금까지 가장 늦은 끝을 MAX로 이어 적고, 각 행에서 그 끝을 넘는 부분만 MAX(0, 끝 − MAX(시작, 앞 행의 가장 늦은 끝))으로 더하면 됩니다. 합계 칸은 [h]:mm 서식으로 보세요.
구간은 몇 개까지 넣을 수 있고, 입력값은 저장되나요?
20개까지 넣을 수 있습니다. 입력값은 브라우저 안에서만 계산하고 서버로 보내지 않으며, 링크 복사를 눌렀을 때만 구간이 주소에 담깁니다.