การแปลงเขตเวลาคืออะไร?
ตัวแปลงเขตเวลาจะแปลงวันที่และเวลาจากเขตเวลาหนึ่งไปยังอีกเขตเวลาหนึ่ง ทำให้คุณเห็นทันทีว่าเวลาที่เทียบเท่าในที่ใดก็ได้ทั่วโลกคือเวลาใด โลกแบ่งออกเป็น 24 เขตเวลาหลัก โดยแต่ละเขตกำหนดเป็นค่าออฟเซตคงที่จาก Coordinated Universal Time (UTC) เมื่อเวลา UTC คือ 14:00 น. จะเป็น 09:00 น. ที่นิวยอร์ก (UTC-5) และ 23:00 น. ที่โตเกียว (UTC+9) การแปลงเขตเวลาให้ถูกต้องต้องทราบค่าออฟเซต UTC ของทั้งเขตต้นทางและปลายทาง และต้องรู้ว่าเวลาออมแสง (DST) มีผลบังคับใช้กับเขตใดเขตหนึ่งหรือไม่
IANA Time Zone Database (มักเรียกว่า Olson database หรือ tz database) คือแหล่งข้อมูลมาตรฐานสำหรับนิยามเขตเวลาที่ระบบปฏิบัติการ ภาษาโปรแกรม และเว็บเบราว์เซอร์ใช้ ฐานข้อมูลนี้กำหนดตัวระบุมาตรฐานให้แต่ละเขตในรูปแบบ Region/City เช่น America/New_York หรือ Asia/Tokyo ซึ่งแตกต่างจากตัวย่อคงที่อย่าง EST หรือ PST ตัวระบุ IANA เก็บประวัติการเปลี่ยนแปลงค่าออฟเซต UTC และการเปลี่ยนผ่าน DST ทั้งหมดสำหรับแต่ละภูมิภาค ทำให้เป็นวิธีเดียวที่เชื่อถือได้สำหรับการแปลงเวลาข้ามวันที่ในอดีตหรืออนาคต
ตัวแปลงเขตเวลานี้ใช้ข้อมูลเขตเวลา IANA ที่มีอยู่ใน JavaScript engine ของเบราว์เซอร์ผ่าน Intl API คุณเลือกเขตเวลาต้นทาง กรอกวันที่และเวลา จากนั้นเครื่องมือจะคำนวณเวลาที่เทียบเท่าในเขตเวลาปลายทางทันที รวมถึงการปรับเวลาออมแสงด้วย เนื่องจากทำงานในเบราว์เซอร์ทั้งหมด จึงไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์และข้อมูลไม่ออกจากอุปกรณ์ของคุณ
ทำไมต้องใช้ตัวแปลงเขตเวลานี้?
การคำนวณเขตเวลาด้วยตนเองเกิดข้อผิดพลาดได้ง่าย โดยเฉพาะเมื่อต้องจัดการกับเวลาออมแสง เมืองที่อยู่ที่ UTC-5 ในเดือนมกราคมอาจอยู่ที่ UTC-4 ในเดือนกรกฎาคม และวันเปลี่ยนผ่านก็แตกต่างกันในแต่ละประเทศ สหรัฐอเมริกาและยุโรปเปลี่ยนนาฬิกาในวันอาทิตย์คนละสัปดาห์กัน ทำให้มีช่วงสองสัปดาห์ที่ค่าออฟเซตระหว่างนิวยอร์กกับลอนดอนต่างจากช่วงที่เหลือของปี เครื่องมือนี้จัดการการเปลี่ยนผ่านทั้งหมดโดยอัตโนมัติโดยใช้ฐานข้อมูล IANA เดียวกับที่ระบบปฏิบัติการของคุณใช้
กรณีการใช้งานตัวแปลงเขตเวลา
ตารางอ้างอิงเขตเวลา IANA
IANA Time Zone Database กำหนดตัวระบุเขตเวลามากกว่า 400 รายการ และได้รับการอัปเดตหลายครั้งต่อปีเพื่อสะท้อนการเปลี่ยนแปลงทางการเมือง กฎ DST ใหม่ และการแก้ไขข้อมูลทางประวัติศาสตร์ ตารางด้านล่างแสดงเขตเวลาที่ใช้กันทั่วไปพร้อมค่าออฟเซต UTC มาตรฐานและพฤติกรรม DST ค่าออฟเซตที่แสดงเป็นสำหรับเวลามาตรฐาน คอลัมน์ DST แสดงค่าออฟเซตที่ปรับแล้วเมื่อเวลาออมแสงมีผลบังคับใช้ในภูมิภาคนั้น
| ตัวระบุ IANA | ชื่อทั่วไป | UTC Offset | 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 ตัวอย่างด้านล่างแสดงวิธีแปลง UTC timestamp เป็นเขตเวลาอื่นใน JavaScript โดยใช้ Intl API, Python โดยใช้ zoneinfo module, Go โดยใช้ time package และคำสั่ง GNU date สำหรับ 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