मेरे पास एक परिदृश्य है जहां मेरे पास टाइमज़ोन ऑफसेट है (मिनटों में) और इसके लिए टाइमज़ोन निर्धारित करने की आवश्यकता है। मुझे पता है कि सभी डेटा उपलब्ध नहीं है (उदाहरण के लिए, -240 मिनट के ऑफसेट के साथ कई टाइमज़ोन हो सकते हैं) लेकिन "सर्वश्रेष्ठ अनुमान" स्वीकार्य है।मैं यूटीसी ऑफसेट द्वारा टाइमज़ोन कैसे निर्धारित कर सकता हूं?
मेरी पहली पास इस तरह देखा:
foreach (var info in TimeZoneInfo.GetSystemTimeZones())
{
if (info.BaseUtcOffset.TotalMinutes == timezoneOffset)
{
// do something here if this is a valid timezone
}
}
यह sorta काम करता है, लेकिन मैं डेलाइट सेविंग जो मुझे कुछ हद तक दूर फेंक रहा है के लिए खाते में करने की जरूरत है। मैं इस भयानक हैक कहा:
foreach (var info in TimeZoneInfo.GetSystemTimeZones())
{
var extra = info.IsDaylightSavingTime(DateTime.Now) ? 60 : 0;
if (info.BaseUtcOffset.TotalMinutes + extra == timezoneOffset)
{
// do something here if this is a valid timezone
}
}
यह है कि में "अच्छी तरह से" काम करता है मैं उपयोगकर्ता उनके लिए सही समय दिखा सकते हैं जब दिन के उजाले बचत प्रभाव में नहीं है और डीएसटी के दौरान लगभग 70% सही कर रहा हूँ। फिर भी ... यह मेरी आंखों के लिए कुछ भयानक कोड है।
क्या ऐसा करने का कोई बेहतर तरीका है? अधिक लालित्य अच्छा होगा, और अधिक सटीकता अभी भी बेहतर होगी।
अद्यतन
तकनीकी तौर पर मैं किसी भी जानकारी जावास्क्रिप्ट तारीख के बारे में प्राप्त कर सकते हैं की पहुंच है। मेरे पास एक पृष्ठ है जिस पर मैंने "ऑफसेट" नामक एक छिपे हुए क्षेत्र को रखा है। मेरे पास एक JQuery फ़ंक्शन है जो ऑफ़सेट फ़ील्ड को डेटटाइम() के साथ पॉप्युलेट करता है। GetTimezoneOffset()। जबकि मुझे डेटटाइम ऑब्जेक्ट पर कुछ भी दिखाई नहीं देता है जो मदद करेगा, शायद यह विचारों के लिए अन्य मार्ग खोल देगा।
@ सेलिंग जूडो: मैंने अपने उत्तर में कुछ कोड जोड़ा है, जो जावास्क्रिप्ट को एक सार्वभौमिक टाइमस्टैम्प को स्थानीय में परिवर्तित करने देता है। – Kip