ISO 8601 기간(Duration) 변환 도구
ISO 8601 기간 표기법(예: PT1H30M)과 초 단위를 상호 변환합니다. YouTube API, AWS 타임아웃 설정, 팟캐스트 RSS 피드 등에서 사용되는 기간 형식을 해독하고 생성할 수 있는 개발자용 도구입니다.
ISO 8601 기간 표기법의 대표 예시
ISO 8601 기간은 "P"로 시작해 년·월·일이 이어지고, 이어서 "T" 다음에 시·분·초가 나오는 형식입니다. 아래는 대표적인 표기와 이에 해당하는 초 값입니다.
| 표기법 | 총 초 | 비고 |
|---|---|---|
| PT30S | 30 | 30초 타임아웃 등 짧은 시간 지정의 대표 예시 |
| PT1H30M | 5,400 | 1시간 30분. 영화 상영 시간이나 YouTube 동영상 길이를 나타낼 때 자주 사용되는 형식 |
| P1D | 86,400 | 1일(24시간). 서버 로그 보존 기간이나 캐시 유효기간 지정에 사용됨 |
| P3Y6M4DT12H30M5S | 110,842,205 | 3년 6개월 4일 12시간 30분 5초에 해당하는 복합 표기 예시(년·월은 연 365.25일 근사값으로 환산) |
ISO 8601 기간(Duration) 표기법이란
ISO 8601 기간 표기법은 "P3Y6M4DT12H30M5S"처럼 하나의 문자열로 두 시점 사이의 "길이"를 나타내는 국제 표준입니다. 날짜·시각이 "언제인가"라는 특정 순간을 가리키는 반면, 기간은 "얼마나 긴가"라는 차이를 나타내므로, 타임스탬프 형식과는 별도로 "P"로 시작하는 전용 표기법이 정의되어 있습니다.
개발자는 YouTube Data API의 동영상 길이 표시, AWS·Google Cloud API의 타임아웃·유효기간 설정, 팟캐스트 RSS 피드의 에피소드 길이 등 다양한 곳에서 이 표기법을 접하게 됩니다. 이 도구는 기간 문자열과 초 단위를 즉시 상호 변환해 주어, 어떤 값이 실제로 얼마나 긴 시간을 나타내는지 바로 확인할 수 있습니다.
ISO 8601 기간과 초 단위 변환 방법
- 기간 문자열을 붙여넣어 초로 변환하기 위쪽 입력란에 "PT1H30M"과 같은 ISO 8601 기간 문자열을 입력하면 총 초와 단위별 세부 내역이 자동으로 표시됩니다.
- 예시로 먼저 체험해 보기 "예시 입력" 버튼을 누르면 년·월·일·시·분·초를 모두 포함한 복합 표기 예시가 입력되어 변환 결과를 바로 확인할 수 있습니다.
- 초를 입력해 기간 문자열로 변환하기 아래쪽 입력란에 변환하고 싶은 총 초를 입력하면 그에 대응하는 ISO 8601 기간 문자열이 생성됩니다.
- 변환 모드 선택하기 "년/월/일 사용"을 선택하면 읽기 쉬운 표기가, "일/시/분/초만"을 선택하면 년월 근사값을 쓰지 않는 정확한 표기가 됩니다.
- 결과 확인 후 복사하기 표시된 총 초·분·시간·일수, 또는 생성된 기간 문자열을 API 요청이나 설정 파일에 그대로 붙여넣어 사용할 수 있습니다.
더 잘 활용하기 위한 팁
- 년·월을 포함하는 기간은 실제로는 달력에 따라 일수가 달라지므로, 이 도구에서는 1년=365.25일, 1개월=30.44일이라는 고정 근사값으로 초를 환산합니다.
- 초에서 기간 문자열을 생성할 때 "일/시/분/초만" 모드를 선택하면 년·월 근사값을 전혀 사용하지 않고 윤년 등의 오차가 없는 정확한 표기를 얻을 수 있습니다.
- YouTube Data API의 동영상 정보(contentDetails.duration)는 ISO 8601 형식으로 반환되므로, 이 도구에 그대로 붙여넣어 초 단위로 변환할 수 있습니다.
- AWS Lambda나 API Gateway 같은 클라우드 서비스의 타임아웃 설정에 ISO 8601 기간 표기법이 사용되는 경우가 있어, 설정값 검증에 유용합니다.
- 팟캐스트 RSS 피드에서 오디오 길이를 나타낼 때 hh:mm:ss 형식 외에 ISO 8601 기간 형식이 사용되기도 합니다.
ISO 8601 기간 변환 활용 사례
YouTube Data API 응답 분석
contentDetails.duration로 반환되는 "PT4M13S" 같은 값을 붙여넣어 동영상이 몇 분 몇 초인지 바로 확인할 수 있습니다.
AWS 등 클라우드 서비스 설정값 디버깅
Step Functions나 CloudFormation의 타임아웃 설정에 적힌 기간 표기가 실제로 몇 초·몇 시간에 해당하는지 검증할 수 있습니다.
팟캐스트 RSS 피드의 오디오 길이 확인
itunes:duration 태그가 ISO 8601 형식을 사용할 때, 흔히 쓰이는 hh:mm:ss 표기와 비교하며 길이를 파악할 수 있습니다.
캘린더·일정 관리 API 연동
Google 캘린더 같은 API가 요구하는 반복 간격이나 알림 시간의 기간 표기를, 초 단위에서 역산해 구성할 수 있습니다.
자체 파서 개발 시 테스트 케이스 작성
기간 파서를 직접 개발할 때, 이 도구로 알려진 기간 문자열의 정확한 초 값을 검산해 테스트의 기댓값으로 사용할 수 있습니다.
ISO 8601 기간 관련 용어집
- ISO 8601
- 날짜·시각·기간의 표기 방법을 정한 국제 표준 규격입니다. "2026-09-16"과 같은 날짜 표기 외에, 이 도구가 다루는 기간(Duration) 표기법도 이 규격의 일부입니다.
- 기간(Duration)
- 두 시점 사이의 길이를 나타내는 값입니다. 특정 한 순간을 가리키는 "날짜·시각"과 달리, 기간은 "얼마나 시간이 흘렀는가"라는 차이 정보를 담고 있습니다.
- PnYnMnDTnHnMnS 표기법
- ISO 8601 기간 표기법의 기본 형식입니다. "P" 뒤에 년(Y)·월(M)·일(D)을, "T" 뒤에 시(H)·분(M)·초(S)를 필요한 단위만 나열합니다.
- 타임스탬프
- 특정한 한 시점을 나타내는 값입니다. 차이를 나타내는 기간과 달리, 타임스탬프는 "언제인가"라는 절대적인 위치를 표현합니다.
- RFC 3339
- ISO 8601을 바탕으로 인터넷상의 날짜·시각 표기법을 정한 규격입니다. 타임스탬프 표기법은 정의하고 있지만, 기간(Duration) 표기법은 ISO 8601 고유의 규정이며 RFC 3339에는 포함되지 않습니다.
- 주 표기법(PnW)
- "P2W"처럼 주(week) 수만으로 기간을 나타내는 축약 표기법입니다. ISO 8601 규격상 년월일이나 시각 부분과 조합할 수 없는 독립된 표기로 정의되어 있습니다.
자주 묻는 질문
여담 ― 컴퓨터 세계에 "기간"을 나타내는 전용 형식이 있는 이유
ISO 8601은 날짜와 시각을 국제적으로 통일된 형식으로 나타내는 규격으로 잘 알려져 있지만, 사실 "기간(Duration)", 즉 두 시점 사이의 길이를 나타내는 표기법도 같은 규격 안에 정의되어 있습니다. 날짜와 시각이 "언제인가"라는 한 지점을 가리키는 반면, 기간은 "얼마나 긴가"라는 차이 정보이며, 둘은 비슷해 보이지만 다뤄야 할 정보의 성질이 전혀 다릅니다. 이 차이를 명확히 하기 위해 "P"로 시작하는 전용 표기법이 마련되었습니다.
기간 표기법이 실무에서 중요하게 쓰이는 이유 중 하나는 프로그램 간 데이터를 주고받을 때 단위 해석 차이로 인한 버그를 막을 수 있다는 점입니다. 예를 들어 API 응답에 "30"이라는 숫자만 포함되어 있다면, 이것이 초인지 분인지는 호출하는 쪽이 별도로 문서를 확인하지 않는 한 알 수 없습니다. 반면 "PT30S"라면 값과 단위가 하나의 문자열에 함께 포함되어 있으므로, 파싱하는 쪽 구현이 올바르다면 해석을 잘못할 여지가 없습니다.
YouTube Data API가 동영상 길이를 ISO 8601 형식으로 반환하는 것도 같은 이유입니다. "PT4M13S"라는 문자열을 보면 이것이 4분 13초짜리 동영상임을 명확히 알 수 있습니다. 마찬가지로 AWS나 Google Cloud의 API에서도 타임아웃이나 유효기간 설정에 이 형식이 채택되는 경우가 있으며, 클라우드 서비스의 YAML 설정 파일이나 JSON 응답에서 이 표기법을 발견했다면 이 도구로 초 단위로 변환해 구체적인 길이를 확인해 보면 감을 잡기 쉬워집니다.
한편 이 규격에는 년·월을 포함하는 기간이 "절대적인 길이"를 갖지 않는다는 흥미로운 특성이 있습니다. 같은 "P1Y"라도 윤년을 넘기는지 여부에 따라 실제 일수가 365일이 되기도 366일이 되기도 합니다. 이 도구가 년월을 포함한 변환에서 근사값을 사용할 수밖에 없는 것도, 근본적으로는 이 규격상의 모호함에서 비롯된 것입니다.