تبدیل منطقه زمانی چیست؟
یک مبدل منطقه زمانی، تاریخ و زمان را از یک منطقه زمانی به منطقهای دیگر تبدیل میکند و به شما امکان میدهد فوری ببینید زمان معادل در هر نقطهای از جهان چیست. جهان به ۲۴ منطقه زمانی اصلی تقسیم میشود که هر کدام به عنوان یک اختلاف ثابت از زمان هماهنگ جهانی (UTC) تعریف میشوند. وقتی ساعت ۱۴:۰۰ UTC است، در نیویورک ساعت ۰۹:۰۰ (UTC-5) و در توکیو ساعت ۲۳:۰۰ (UTC+9) است. برای تبدیل صحیح بین مناطق زمانی باید اختلاف UTC هر دو منطقه مبدا و مقصد را بدانید و مشخص کنید آیا توقیت تابستانی (DST) در هر کدام اعمال میشود یا خیر. ایران با شناسه Asia/Tehran از اختلاف UTC+3:30 استفاده میکند.
پایگاه داده مناطق زمانی IANA (که با نامهای پایگاه داده Olson یا tz نیز شناخته میشود) منبع استاندارد تعریف مناطق زمانی است که سیستمعاملها، زبانهای برنامهنویسی و مرورگرهای وب از آن استفاده میکنند. این پایگاه داده یک شناسه استاندارد به هر منطقه در قالب منطقه/شهر اختصاص میدهد؛ مانند America/New_York یا Asia/Tehran. بر خلاف اختصارهای ثابتی مانند EST یا PST، شناسههای IANA تاریخچه کامل تغییرات اختلاف UTC و گذارهای توقیت تابستانی هر منطقه را در خود دارند و تنها روش قابلاعتماد برای تبدیل زمان در تاریخهای گذشته یا آینده هستند.
این مبدل منطقه زمانی از دادههای مناطق IANA از طریق Intl API موجود در موتور JavaScript مرورگر شما استفاده میکند. یک منطقه زمانی مبدا انتخاب میکنید، تاریخ و زمان وارد میکنید و ابزار بلافاصله زمان معادل را در منطقه زمانی مقصد محاسبه میکند، از جمله هر گونه تنظیم توقیت تابستانی. چون همه چیز در مرورگر شما اجرا میشود، هیچ درخواستی به سرور ارسال نمیشود و دادهای از دستگاه شما خارج نمیشود.
چرا از این مبدل منطقه زمانی استفاده کنیم؟
محاسبه دستی مناطق زمانی مستعد خطاست، به خصوص وقتی توقیت تابستانی وارد میشود. شهری که در ژانویه UTC-5 است ممکن است در جولای UTC-4 باشد، و تاریخهای تغییر بین کشورها متفاوت است. ایالات متحده و اروپا ساعت خود را در یکشنبههای متفاوتی تغییر میدهند و یک بازه دو هفتهای ایجاد میشود که در آن اختلاف بین نیویورک و لندن با بقیه سال فرق دارد. این ابزار تمام آن گذارها را به صورت خودکار با استفاده از همان پایگاه داده IANA که سیستمعامل شما استفاده میکند مدیریت میکند.
موارد استفاده از مبدل منطقه زمانی
مرجع مناطق زمانی IANA
پایگاه داده مناطق زمانی IANA بیش از ۴۰۰ شناسه منطقه زمانی تعریف میکند و چندین بار در سال برای انعکاس تغییرات سیاسی، قوانین جدید توقیت تابستانی و اصلاحات تاریخی بهروز میشود. جدول زیر پرکاربردترین مناطق را با اختلافهای UTC استاندارد و رفتار توقیت تابستانی فهرست میکند. اختلافهای نمایش داده شده برای زمان استاندارد هستند؛ ستون DST اختلاف تنظیمشده را در زمانی که توقیت تابستانی برای آن منطقه فعال است نشان میدهد.
| شناسه IANA | نام رایج | اختلاف UTC | توقیت تابستانی |
|---|---|---|---|
| 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 را در JavaScript با استفاده از Intl API، در Python با استفاده از ماژول zoneinfo، در Go با استفاده از پکیج time و با دستور GNU date برای اسکریپتهای شل به مناطق زمانی دیگر تبدیل کنید.
// 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