Apa Itu Konversi Zona Waktu?
Konverter zona waktu menerjemahkan tanggal dan waktu dari satu zona waktu ke zona waktu lainnya, sehingga Anda dapat langsung mengetahui waktu yang setara di mana saja di dunia. Dunia dibagi menjadi 24 zona waktu utama, masing-masing didefinisikan sebagai offset tetap dari Coordinated Universal Time (UTC). Ketika waktu menunjukkan 14:00 UTC, waktu di New York adalah 09:00 (UTC-5) dan di Tokyo adalah 23:00 (UTC+9). Konversi antar zona waktu dengan benar memerlukan pengetahuan tentang offset UTC dari zona sumber maupun zona tujuan, serta apakah daylight saving time (DST) sedang berlaku untuk keduanya.
IANA Time Zone Database (sering disebut basis data Olson atau tz database) adalah sumber standar definisi zona waktu yang digunakan oleh sistem operasi, bahasa pemrograman, dan browser. Database ini memberikan pengenal kanonik untuk setiap zona waktu dalam format Region/Kota, seperti America/New_York atau Asia/Tokyo. Berbeda dengan singkatan tetap seperti EST atau PST, pengenal IANA menyimpan riwayat lengkap perubahan offset UTC dan transisi DST untuk setiap wilayah, menjadikannya satu-satunya cara yang andal untuk mengonversi waktu di masa lalu maupun masa depan.
Konverter zona waktu ini menggunakan data zona waktu IANA yang tertanam di mesin JavaScript browser Anda melalui Intl API. Anda memilih zona waktu sumber, memasukkan tanggal dan waktu, dan alat ini langsung menghitung waktu yang setara di zona waktu tujuan Anda, termasuk penyesuaian daylight saving. Karena semuanya berjalan di browser, tidak ada permintaan ke server dan tidak ada data yang meninggalkan perangkat Anda.
Mengapa Menggunakan Konverter Zona Waktu Ini?
Perhitungan zona waktu secara manual sangat rentan terhadap kesalahan, terutama ketika DST terlibat. Sebuah kota yang berada di UTC-5 pada bulan Januari mungkin berada di UTC-4 pada bulan Juli, dan tanggal transisinya berbeda antar negara. Amerika Serikat dan Eropa mengubah jam mereka pada hari Minggu yang berbeda, menciptakan jendela dua minggu di mana offset antara New York dan London berbeda dari biasanya. Alat ini menangani semua transisi tersebut secara otomatis menggunakan basis data IANA yang sama dengan yang digunakan oleh sistem operasi Anda.
Kasus Penggunaan Konverter Zona Waktu
Referensi Zona Waktu IANA
IANA Time Zone Database mendefinisikan lebih dari 400 pengenal zona waktu, dan diperbarui beberapa kali per tahun untuk mencerminkan perubahan politik, aturan DST baru, dan koreksi historis. Tabel di bawah memuat zona waktu yang paling umum digunakan beserta offset UTC standarnya dan perilaku DST-nya. Offset yang ditampilkan adalah untuk waktu standar; kolom DST menunjukkan offset yang disesuaikan ketika daylight saving time aktif untuk wilayah tersebut.
| Pengenal IANA | Nama Umum | Offset 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) |
Contoh Kode
Setiap bahasa pemrograman utama menyediakan konversi zona waktu melalui basis data IANA. Contoh di bawah menunjukkan cara mengonversi timestamp UTC ke zona waktu lain dalam JavaScript menggunakan Intl API, Python menggunakan modul zoneinfo, Go menggunakan paket time, dan perintah GNU date untuk skrip shell.
// 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