2013-07-09 7 views
8

मैं एक नेट सेवा से यूटीसी दिनांक/समय की एक सूची है, तो इस तरह से प्रारूपित वापसी:moment.js, समय क्षेत्र और डेलाइट सेविंग

"2013-07-09 19:48:07 +00:00". 

ग्राहक पर, मैं एक में इन स्ट्रिंग मूल्यों से प्रत्येक कन्वर्ट इसी यूटीसी आधारित पल तो

var fooUtc = new moment.utc(serverDateTimeString) 

पृष्ठ पर की तरह, वहाँ एक सूखना डाउन समय क्षेत्रों है कि उपयोगकर्ता को बदल सकते हैं की सूची से युक्त है।

{ 
    id: "Central Standard Time", 
    label: "(UTC-06:00) Central Time (US & Canada)", 
    observesDaylightSavings: true, 
    baseUtcOffset: { 
     asHours: -6, 
     asMinutes: -360, 
     asText: "-06:00" 
} 

मैं तो इतना तरह ऑफसेट हर पल चयनित समय-क्षेत्र में गुजर प्रदर्शित करते हैं,:

fooUtc.local().zone(selectedTimeZone.baseUtcOffset.asMinutes).format() 

हालांकि, परिणाम ये निम्नलिखित की तरह समय-क्षेत्र की वस्तुओं का संग्रह से जुड़े होते हैं डेलाइट बचत खाते में नहीं लेता है, क्योंकि नेट से आने वाले टाइमज़ोन डेटा डीएसटी और गैर डीएसटी ऑफसेट्स के बीच अंतर नहीं करता है।

क्या इस काम को moment.js या नए पल-टाइमज़ोन बिट्स के साथ बनाने का कोई तरीका है? मुझे लगता है कि अगर मैं मानक यूटीसी ऑफ़सेट नामों (पूर्व: "केंद्रीय मानक समय") को किसी दिए गए टाइमज़ोन के Olson डीबी पहचानकर्ता (पूर्व: "अमेरिका/शिकागो") में मैप कर सकता हूं, लेकिन यदि कोई आसान तरीका है, तो कृपया यह संभव हो सकता है। मुझे बताएं।

+0

मैं एक नक्शाकार [इस पोस्ट] के आधार पर फ़ाइल बना दी [1] [1]: http://stackoverflow.com/questions/8372537/converting-olson-tzid-to- विंडोज-टाइम-जोन –

उत्तर

5

आपको .NET पक्ष पर Noda Time और क्लाइंट पर moment-timezone का उपयोग करके अन्वेषण करना चाहिए, IANA/Olson समय क्षेत्र आईडी पास करना।

यदि आप अपनी ड्रॉप-डाउन सूची में विंडोज़ समय क्षेत्र आईडी में रहना चाहते हैं, तो आप नोडा टाइम में एम्बेडेड सीएलडीआर डेटा के साथ रूपांतरण कर सकते हैं। मैंने दस्तावेज किया है कि इस पोस्ट में इसे कैसे करें: How to translate between Windows and IANA time zones?

लेकिन बेहतर समाधान विंडोज़ जोनों से एक साथ बचने के लिए होगा। आप इस पोस्ट में वर्णित तकनीक का उपयोग करके आईएएनए/ओल्सन आईडी की एक सूची बना सकते हैं: How should I populate a list of IANA/Olson time zones from Noda Time?

बेहतर अभी तक, आप अपनी ड्रॉप-डाउन सूची को नियंत्रण (इनलाइन या मोडल) से प्रतिस्थापित कर सकते हैं जो दुनिया का नक्शा दिखाता है , इसलिए आपके उपयोगकर्ता आसानी से अपना समय क्षेत्र चुन सकते हैं। मैंने देखा है कि इसके लिए सबसे अच्छा नियंत्रण this one है, लेकिन वहां कुछ अन्य भी हैं।

यदि आप आईएएनए/ओल्सन जोन में कड़ाई से सौदा कर सकते हैं, तो रूपांतरण की कोई आवश्यकता नहीं है। आप विंडोज TimeZoneInfo ऑब्जेक्ट छोड़ सकते हैं और इसके बजाए नोडा टाइम का उपयोग कर सकते हैं। यदि आप चाहते हैं, तो आप केवल अपने समय क्षेत्र रूपांतरण कार्यों को प्रतिस्थापित कर सकते हैं और बाकी को बरकरार रख सकते हैं। या, आप ऑल-आउट जा सकते हैं और अपने सभी DateTime और DateTimeOffset कोडा समय प्रकारों के साथ उपयोग कर सकते हैं। यह आप पर निर्भर करता है।

+0

जो अच्छा होगा, लेकिन उपयोगकर्ता प्राथमिकताओं को टाइमज़ोन आईडी का उपयोग करके डीबी में संग्रहीत किया जाता है, इसलिए मैं इसके साथ अभी अटक गया हूं। नोडा पर हेड-अप के लिए धन्यवाद ... मैं एक नज़र डालूंगा ... –

संबंधित मुद्दे