시간대 변환이란?
시간대 변환기는 날짜와 시간을 한 시간대에서 다른 시간대로 변환하여 전 세계 어디서든 동등한 시간을 즉시 확인할 수 있게 합니다. 세계는 협정 세계시(UTC)를 기준으로 고정 오프셋으로 정의된 24개의 주요 시간대로 나뉩니다. UTC 14:00일 때 뉴욕은 09:00(UTC-5), 도쿄는 23:00(UTC+9)입니다. 시간대 간 올바른 변환을 위해서는 출발 시간대와 대상 시간대의 UTC 오프셋, 그리고 각 시간대에서 일광 절약 시간(DST)이 적용 중인지 여부를 알아야 합니다.
IANA 시간대 데이터베이스(Olson 데이터베이스 또는 tz 데이터베이스라고도 함)는 운영 체제, 프로그래밍 언어, 웹 브라우저에서 사용하는 시간대 정의의 표준 소스입니다. America/New_York 또는 Asia/Tokyo처럼 Region/City 형식으로 각 시간대에 표준 식별자를 할당합니다. EST나 PST 같은 고정 약어와 달리, IANA 식별자는 각 지역의 UTC 오프셋 변경 및 DST 전환의 전체 이력을 인코딩하여 과거 또는 미래의 날짜에 대한 시간 변환을 신뢰성 있게 수행할 수 있는 유일한 방법입니다.
이 시간대 변환기는 Intl API를 통해 브라우저의 JavaScript 엔진에 내장된 IANA 시간대 데이터를 사용합니다. 출발 시간대를 선택하고 날짜와 시간을 입력하면, 도구가 일광 절약 시간 조정을 포함하여 대상 시간대의 동등한 시간을 즉시 계산합니다. 브라우저에서 완전히 실행되므로 서버 왕복이 없고 데이터가 기기를 벗어나지 않습니다.
이 시간대 변환기를 사용하는 이유
수동으로 시간대를 계산하면 오류가 발생하기 쉽습니다. 특히 일광 절약 시간이 관련된 경우에는 더욱 그렇습니다. 1월에 UTC-5인 도시가 7월에는 UTC-4가 될 수 있으며, 전환 날짜는 국가마다 다릅니다. 미국과 유럽은 서로 다른 일요일에 시계를 변경하여, 1년 중 2주 동안 뉴욕과 런던의 시간 차이가 평소와 달라집니다. 이 도구는 운영 체제와 동일한 IANA 데이터베이스를 사용하여 이러한 모든 전환을 자동으로 처리합니다.
시간대 변환기 활용 사례
IANA 시간대 참조 표
IANA 시간대 데이터베이스는 400개 이상의 시간대 식별자를 정의하며, 정치적 변경, 새로운 DST 규칙, 이력 수정을 반영하여 연 수회 업데이트됩니다. 아래 표는 가장 많이 사용되는 시간대와 표준 UTC 오프셋 및 DST 동작을 나열합니다. 표시된 오프셋은 표준 시간 기준이며, DST 컬럼은 해당 지역에서 일광 절약 시간이 적용될 때의 조정된 오프셋을 나타냅니다.
| IANA 식별자 | 일반 명칭 | UTC 오프셋 | DST |
|---|---|---|---|
| UTC | Coordinated Universal Time | +00:00 | No |
| America/New_York | Eastern Time (US) | -05:00 | Yes (EDT -04:00) |
| America/Chicago | Central Time (US) | -06:00 | Yes (CDT -05:00) |
| America/Denver | Mountain Time (US) | -07:00 | Yes (MDT -06:00) |
| America/Los_Angeles | Pacific Time (US) | -08:00 | Yes (PDT -07:00) |
| Europe/London | Greenwich Mean Time | +00:00 | Yes (BST +01:00) |
| Europe/Berlin | Central European Time | +01:00 | Yes (CEST +02:00) |
| Europe/Moscow | Moscow Time | +03:00 | No |
| Asia/Dubai | Gulf Standard Time | +04:00 | No |
| Asia/Kolkata | India Standard Time | +05:30 | No |
| Asia/Shanghai | China Standard Time | +08:00 | No |
| Asia/Tokyo | Japan Standard Time | +09:00 | No |
| Australia/Sydney | Australian Eastern Time | +10:00 | Yes (AEDT +11:00) |
| Pacific/Auckland | New Zealand Standard Time | +12:00 | Yes (NZDT +13:00) |
코드 예제
모든 주요 프로그래밍 언어는 IANA 데이터베이스를 통해 시간대 변환을 지원합니다. 아래 예제는 Intl API를 사용하는 JavaScript, zoneinfo 모듈을 사용하는 Python, time 패키지를 사용하는 Go, 그리고 셸 스크립트용 GNU date 명령으로 UTC 타임스탬프를 다른 시간대로 변환하는 방법을 보여줍니다.
// Convert a date from one timezone to another
const date = new Date('2026-03-15T09:00:00Z')
// Format in specific timezone
const nyTime = date.toLocaleString('en-US', { timeZone: 'America/New_York' })
// → "3/15/2026, 5:00:00 AM"
const tokyoTime = date.toLocaleString('en-US', { timeZone: 'Asia/Tokyo' })
// → "3/15/2026, 6:00:00 PM"
// Get the UTC offset for a timezone programmatically
function getUtcOffset(tz: string, date = new Date()) {
const fmt = new Intl.DateTimeFormat('en-US', {
timeZone: tz,
timeZoneName: 'longOffset',
})
const parts = fmt.formatToParts(date)
return parts.find(p => p.type === 'timeZoneName')?.value ?? ''
}
getUtcOffset('Asia/Kolkata') // → "GMT+05:30"from datetime import datetime
from zoneinfo import ZoneInfo
# Create a timezone-aware datetime
dt = datetime(2026, 3, 15, 9, 0, tzinfo=ZoneInfo('UTC'))
# Convert to New York time
ny = dt.astimezone(ZoneInfo('America/New_York'))
print(ny) # → 2026-03-15 05:00:00-04:00 (EDT in March)
# Convert to Tokyo time
tokyo = dt.astimezone(ZoneInfo('Asia/Tokyo'))
print(tokyo) # → 2026-03-15 18:00:00+09:00
# Get current time in any timezone
now_berlin = datetime.now(ZoneInfo('Europe/Berlin'))
print(now_berlin.strftime('%Y-%m-%d %H:%M %Z')) # → 2026-03-15 10:00 CETpackage main
import (
"fmt"
"time"
)
func main() {
utc := time.Date(2026, 3, 15, 9, 0, 0, 0, time.UTC)
// Load timezone by IANA name
ny, _ := time.LoadLocation("America/New_York")
tokyo, _ := time.LoadLocation("Asia/Tokyo")
fmt.Println(utc.In(ny)) // → 2026-03-15 05:00:00 -0400 EDT
fmt.Println(utc.In(tokyo)) // → 2026-03-15 18:00:00 +0900 JST
// Get the UTC offset in seconds
_, offset := utc.In(ny).Zone()
fmt.Printf("UTC offset: %+d hours\n", offset/3600) // → UTC offset: -4 hours
}# Display current time in a specific timezone TZ='Asia/Tokyo' date '+%Y-%m-%d %H:%M:%S %Z' # → 2026-03-15 18:00:00 JST # Convert a UTC timestamp to another timezone TZ='America/Los_Angeles' date -d '2026-03-15T09:00:00Z' '+%Y-%m-%d %H:%M %Z' # → 2026-03-15 02:00 PDT # List all available IANA timezone names timedatectl list-timezones | head -20