Chuyển Đổi Múi Giờ Là Gì?
Công cụ chuyển đổi múi giờ dịch ngày và giờ từ múi giờ này sang múi giờ khác, cho phép bạn xem ngay giờ tương ứng ở bất kỳ nơi nào trên thế giới. Thế giới được chia thành 24 múi giờ chính, mỗi múi giờ được định nghĩa là một độ lệch cố định so với Giờ Phối Hợp Quốc Tế (UTC). Khi UTC là 14:00, đồng hồ ở New York chỉ 09:00 (UTC-5) và ở Tokyo là 23:00 (UTC+9). Để chuyển đổi múi giờ chính xác, bạn cần biết độ lệch UTC của cả múi giờ nguồn lẫn múi giờ đích, cũng như liệu giờ tiết kiệm ánh sáng ban ngày (DST) có đang áp dụng cho một trong hai hay không.
Cơ sở dữ liệu múi giờ IANA (còn gọi là cơ sở dữ liệu Olson hay tz database) là nguồn định nghĩa múi giờ tiêu chuẩn được hệ điều hành, ngôn ngữ lập trình và trình duyệt web sử dụng. Nó gán một định danh chuẩn cho mỗi vùng theo định dạng Khu_Vực/Thành_Phố, ví dụ như America/New_York hay Asia/Tokyo. Khác với các viết tắt cố định như EST hay PST, định danh IANA mã hóa toàn bộ lịch sử thay đổi độ lệch UTC và các lần chuyển đổi DST của từng khu vực, khiến chúng trở thành cách duy nhất đáng tin cậy để chuyển đổi giờ qua các ngày trong quá khứ hoặc tương lai.
Công cụ chuyển đổi múi giờ này sử dụng dữ liệu múi giờ IANA tích hợp trong JavaScript engine của trình duyệt thông qua Intl API. Bạn chọn múi giờ nguồn, nhập ngày và giờ, và công cụ ngay lập tức tính toán giờ tương ứng ở múi giờ đích, bao gồm mọi điều chỉnh tiết kiệm ánh sáng ban ngày. Vì toàn bộ quá trình chạy trong trình duyệt, không có yêu cầu gửi lên máy chủ và không có dữ liệu nào rời khỏi thiết bị của bạn.
Tại Sao Dùng Công Cụ Chuyển Đổi Múi Giờ Này?
Tính toán múi giờ thủ công dễ mắc lỗi, đặc biệt khi có DST. Một thành phố ở UTC-5 vào tháng Một có thể là UTC-4 vào tháng Bảy, và ngày chuyển đổi khác nhau giữa các quốc gia. Hoa Kỳ và châu Âu thay đổi đồng hồ vào các ngày Chủ Nhật khác nhau, tạo ra khoảng thời gian hai tuần khi độ lệch giữa New York và London khác với phần còn lại của năm. Công cụ này xử lý tất cả các lần chuyển đổi đó tự động, sử dụng cùng cơ sở dữ liệu IANA mà hệ điều hành của bạn dùng.
Các Trường Hợp Sử Dụng Công Cụ Chuyển Đổi Múi Giờ
Tài Liệu Tham Chiếu Múi Giờ IANA
Cơ sở dữ liệu múi giờ IANA định nghĩa hơn 400 định danh múi giờ và được cập nhật nhiều lần mỗi năm để phản ánh các thay đổi chính trị, quy tắc DST mới và các sửa đổi lịch sử. Bảng dưới đây liệt kê các múi giờ được dùng phổ biến nhất cùng độ lệch UTC tiêu chuẩn và hành vi DST. Độ lệch hiển thị là cho giờ tiêu chuẩn; cột DST cho thấy độ lệch được điều chỉnh khi DST đang có hiệu lực ở khu vực đó.
| Định Danh IANA | Tên Thông Thường | Độ Lệch 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) |
Ví Dụ Code
Hầu hết các ngôn ngữ lập trình lớn đều hỗ trợ chuyển đổi múi giờ thông qua cơ sở dữ liệu IANA. Các ví dụ dưới đây cho thấy cách chuyển đổi timestamp UTC sang các múi giờ khác trong JavaScript bằng Intl API, Python bằng module zoneinfo, Go bằng package time, và lệnh GNU date cho shell script.
// 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