ما هو تحويل المناطق الزمنية؟
يُحوِّل محوّل المناطق الزمنية تاريخًا ووقتًا من منطقة زمنية إلى أخرى، مما يتيح لك رؤية الوقت المكافئ في أي مكان في العالم فورًا. ينقسم العالم إلى 24 منطقة زمنية رئيسية، تُعرَّف كل منها بإزاحة ثابتة عن التوقيت العالمي المنسق (UTC). عندما يكون الوقت 14:00 بتوقيت UTC، يكون الوقت 09:00 في نيويورك (UTC-5) و23:00 في طوكيو (UTC+9). يتطلب التحويل الصحيح بين المناطق الزمنية معرفة إزاحة UTC لكل من المنطقتين المصدر والهدف، وما إذا كان التوقيت الصيفي (DST) مُفعَّلًا في أيٍّ منهما.
قاعدة بيانات IANA للمناطق الزمنية (المعروفة أيضًا بقاعدة بيانات Olson أو tz) هي المصدر المعياري لتعريفات المناطق الزمنية التي تستخدمها أنظمة التشغيل ولغات البرمجة ومتصفحات الويب. وتُسنَد لكل منطقة معرِّف فريد بصيغة المنطقة/المدينة، مثل America/New_York أو Asia/Tokyo. وخلافًا للاختصارات الثابتة كـ EST أو PST، تشمل معرِّفات IANA التاريخ الكامل لتغييرات إزاحة UTC وتحولات التوقيت الصيفي لكل منطقة، مما يجعلها الطريقة الوحيدة الموثوقة لتحويل الوقت عبر التواريخ الماضية والمستقبلية.
يستخدم هذا المحوّل بيانات مناطق IANA المدمجة في محرك JavaScript بمتصفحك عبر واجهة Intl API. تختار منطقة زمنية مصدر وتُدخل تاريخًا ووقتًا، فتحسب الأداة على الفور الوقت المكافئ في المنطقة الزمنية الهدف، مع مراعاة أي تعديلات للتوقيت الصيفي. ولأن العملية تجري بالكامل في متصفحك، فلا توجد رحلة إلى الخادم ولا تغادر بياناتك جهازك.
لماذا تستخدم هذا المحوّل؟
حساب المناطق الزمنية يدويًا عرضة للأخطاء، خاصةً عند تدخل التوقيت الصيفي. قد تكون مدينة ما بتوقيت UTC-5 في يناير وUTC-4 في يوليو، وتختلف تواريخ التحول من دولة إلى أخرى. تُغير الولايات المتحدة وأوروبا توقيتيهما في أيام أحد مختلفة، مما يخلق نافذة مدتها أسبوعان تختلف فيها الفجوة بين نيويورك ولندن عن بقية العام. تُعالج هذه الأداة جميع تلك التحولات تلقائيًا باستخدام قاعدة بيانات IANA ذاتها التي يستخدمها نظام تشغيلك.
حالات استخدام محوّل المناطق الزمنية
مرجع مناطق IANA الزمنية
تُعرِّف قاعدة بيانات IANA للمناطق الزمنية أكثر من 400 معرِّف منطقة زمنية، وتُحدَّث عدة مرات سنويًا لتعكس التغييرات السياسية وقواعد التوقيت الصيفي الجديدة والتصحيحات التاريخية. يسرد الجدول أدناه المناطق الأكثر استخدامًا مع إزاحات 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