समय क्षेत्र (Time Zone) के बीच कैसे बदलें
टाइम ज़ोन कन्वर्शन दो तरह से गलत होता है: ऑफ़सेट गलत, या daylight saving time (DST) को नज़रअंदाज़ करना। न्यूयॉर्क सर्दियों में UTC−5 और गर्मियों में UTC−4 होता है। फ़रवरी का "शाम 5 बजे EST" और जुलाई का "शाम 5 बजे EDT" अलग-अलग UTC ऑफ़सेट उपयोग करते हैं। हार्डकोड ऑफ़सेट वाले टूल और कोड गलत होते हैं।
ब्राउज़र में
Time Zone Converter में समय डालें और दो ज़ोन चुनें। कन्वर्टर IANA टाइमज़ोन डेटा उपयोग करता है, इसलिए DST ट्रांज़िशन अपने आप हैंडल होता है — कोई मैनुअल ऑफ़सेट एडजस्टमेंट नहीं।
सामान्य टाइम ज़ोन के UTC ऑफ़सेट
| शहर | IANA ज़ोन | मानक ऑफ़सेट | DST ऑफ़सेट |
|---|---|---|---|
| न्यूयॉर्क | America/New_York | UTC−5 | UTC−4 |
| लंदन | Europe/London | UTC+0 | UTC+1 |
| पेरिस | Europe/Paris | UTC+1 | UTC+2 |
| दुबई | Asia/Dubai | UTC+4 | — (DST नहीं) |
| मुंबई | Asia/Kolkata | UTC+5:30 | — (DST नहीं) |
| सिंगापुर | Asia/Singapore | UTC+8 | — (DST नहीं) |
| टोक्यो | Asia/Tokyo | UTC+9 | — (DST नहीं) |
| सिडनी | Australia/Sydney | UTC+10 | UTC+11 |
IANA ज़ोन नाम (America/New_York) उपयोग करें, संक्षेप (EST) नहीं। EST अस्पष्ट है — उत्तरी अमेरिका और ऑस्ट्रेलिया में अलग-अलग ज़ोन को दर्शाता है।
Python
Python 3.9+ में zoneinfo स्टैंडर्ड लाइब्रेरी में शामिल है। कोई थर्ड-पार्टी पैकेज नहीं चाहिए।
from datetime import datetime
from zoneinfo import ZoneInfo
# टाइमज़ोन-अवेयर datetime बनाएं
ny_time = datetime(2026, 3, 15, 14, 30, tzinfo=ZoneInfo('America/New_York'))
# दूसरे ज़ोन में बदलें
london = ny_time.astimezone(ZoneInfo('Europe/London'))
tokyo = ny_time.astimezone(ZoneInfo('Asia/Tokyo'))
print(f'न्यूयॉर्क: {ny_time:%Y-%m-%d %H:%M %Z}')
print(f'लंदन: {london:%Y-%m-%d %H:%M %Z}')
print(f'टोक्यो: {tokyo:%Y-%m-%d %H:%M %Z}')
# वर्तमान UTC समय को कई ज़ोन में बदलें
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
now_utc = datetime.now(timezone.utc)
zones = ['America/New_York', 'Europe/London', 'Asia/Kolkata', 'Asia/Tokyo']
for tz in zones:
local = now_utc.astimezone(ZoneInfo(tz))
print(f'{tz:<25} {local:%Y-%m-%d %H:%M %Z}')
JavaScript
// तारीख को किसी टाइमज़ोन में बदलें
function convertToTimezone(date, timezone) {
return new Intl.DateTimeFormat('hi-IN', {
timeZone: timezone,
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', second: '2-digit',
hour12: false,
}).format(date);
}
const now = new Date();
console.log(convertToTimezone(now, 'America/New_York'));
console.log(convertToTimezone(now, 'Asia/Kolkata'));
console.log(convertToTimezone(now, 'Asia/Tokyo'));
// किसी भी टाइमज़ोन का मौजूदा UTC ऑफ़सेट (मिनट में) प्राप्त करें
function getUtcOffsetMinutes(timezone, date = new Date()) {
const utc = new Date(date.toLocaleString('en-US', { timeZone: 'UTC' }));
const tz = new Date(date.toLocaleString('en-US', { timeZone: timezone }));
return (tz - utc) / 60000;
}
console.log(getUtcOffsetMinutes('America/New_York')); // DST के अनुसार -300 या -240
console.log(getUtcOffsetMinutes('Asia/Kolkata')); // हमेशा 330
Naive datetime जाल
टाइमज़ोन जानकारी के बिना Python datetime naive होता है — उसे DST की जानकारी नहीं। DST ट्रांज़िशन पर naive datetime पर गणित करने से गलत परिणाम आते हैं।
from datetime import datetime, timedelta
# गलत — US DST परिवर्तन दिन पर naive datetime (रात 2 बजे घड़ी आगे हो जाती है)
dt = datetime(2026, 3, 8, 1, 0)
print(dt + timedelta(hours=2)) # 3:00 AM दिखाता है, लेकिन लोकल टाइम 2 AM पर 3 AM हो गया
# सही — अवेयर datetime
from zoneinfo import ZoneInfo
dt = datetime(2026, 3, 8, 1, 0, tzinfo=ZoneInfo('America/New_York'))
print(dt + timedelta(hours=2)) # DST गैप को सही तरह हैंडल करता है
जब भी गणित करने वाला datetime बनाएं, टाइमज़ोन जोड़ें।
समय स्टोर और ट्रांसमिट करना
| तरीका | समस्या |
|---|---|
EST / PST के रूप में स्टोर |
अस्पष्ट संक्षेप, DST एनकोड नहीं |
UTC ऑफ़सेट (-05:00) के रूप में |
भविष्य का DST व्यवहार नहीं दर्शाता |
| UTC + IANA ज़ोन नाम | सही — स्पष्ट, DST हैंडल होता है |
डेटाबेस के लिए: UTC टाइमस्टैंप स्टोर करें। लोकल टाइम दिखाना हो तो IANA ज़ोन नाम अलग स्टोर करें। पढ़ते समय लोकल टाइम पुनर्निर्माण करें।
मुख्य बातें
- IANA ज़ोन नाम (
America/New_York) उपयोग करें —ESTजैसे संक्षेप महाद्वीपों में अस्पष्ट हैं। - Python 3.9+ का
zoneinfoDST अपने आप हैंडल करता है; आधुनिक प्रोजेक्ट मेंpytzकी ज़रूरत नहीं। - Naive datetime DST सीमाओं पर गलत रिज़ल्ट देता है — हमेशा टाइमज़ोन लगाएं।
- दुबई, मुंबई, सिंगापुर और टोक्यो में DST नहीं — उनका ऑफ़सेट साल भर स्थिर रहता है।
- डेटाबेस में UTC टाइमस्टैंप स्टोर करें; दिखाते समय IANA ज़ोन नाम से लोकल टाइम बनाएं।