दिलचस्प पोस्ट
मैं रेडियो बटन के रंग को कैसे बदलूं? क्या यह एक नाशक में शून्य के लिए पॉइंटर्स सेट करना उचित है? पृष्ठों के लिए फेसबुक एक्सेस टोकन लालची बनाम अनिच्छुक बनाम पारस्परिक क्वांटीफायर जावास्क्रिप्ट: document.execCommand क्रॉस-ब्राउज़र? एक आशय के सभी अतिरिक्त सूचीकरण किसी विंडोज़ प्रपत्र आवेदन में कीबोर्ड शॉर्टकट को लागू करने का सर्वोत्तम तरीका? जावा / हाइबरनेट – लिखने के ऑपरेशन को केवल-पढ़ने के लिए मोड में अनुमति नहीं है क्या सी ++ के नए ऑपरेशन द्वारा पते की रिटर्न के संरेखण की कोई गारंटी है? वर्ग। के लिए कैसे काम करता है? स्विच के साथ एंड्रॉइड कोडिंग (स्ट्रिंग) मौजूदा पीडीएफ़ को पायथन से पाठ जोड़ें फोरट्रान सबस्ट्रेटीन गलत मूल्यों को लौट रहा है अस्वीकृत getCellType के लिए विकल्प एक क्रॉसवर्ड उत्पन्न करने के लिए एल्गोरिथ्म

किसी विशेष समयक्षेत्र में जावास्क्रिप्ट की तारीख को आरंभ करने के लिए

मेरे पास स्ट्रिंग के रूप में एक विशेष समयक्षेत्र में दिनांक समय है और मैं इसे स्थानीय समय में कनवर्ट करना चाहता हूं। लेकिन, मुझे नहीं पता कि दिनांक ऑब्जेक्ट में समय-क्षेत्र कैसे सेट करना है।

उदाहरण के लिए, मेरे पास Feb 28 2013 7:00 PM ET, , Feb 28 2013 7:00 PM ET, तो मैं कर सकता हूं

 var mydate = new Date(); mydate.setFullYear(2013); mydate.setMonth(02); mydate.setDate(28); mydate.setHours(7); mydate.setMinutes(00); 

जहाँ तक मुझे पता है, मैं या तो यूटीसी समय या स्थानीय समय सेट कर सकता हूं। लेकिन, मैं किसी अन्य समयक्षेत्र में समय कैसे तय करूं?

मैंने यूटीसी से ओफ़्सेट को जोड़ने / घटाना का उपयोग करने की कोशिश की, लेकिन मुझे नहीं पता कि डेलाइट बचत को कैसे मुकाबला करना है मुझे यकीन नहीं है कि मैं सही दिशा की ओर बढ़ रहा हूं।

मैं जावास्क्रिप्ट में एक अलग समयक्षेत्र से समय को स्थानीय समय में कैसे परिवर्तित कर सकता हूं?

Solutions Collecting From Web of "किसी विशेष समयक्षेत्र में जावास्क्रिप्ट की तारीख को आरंभ करने के लिए"

पृष्ठभूमि

जावास्क्रिप्ट की Date ऑब्जेक्ट आंतरिक रूप से यूटीसी में समय को ट्रैक करता है, लेकिन आम तौर पर उस पर चलने वाले कंप्यूटर के स्थानीय समय में इनपुट और आउटपुट स्वीकार करता है। अन्य समय क्षेत्रों में समय के साथ काम करने के लिए इसमें कोई सुविधा नहीं है। आप पार्स और आउटपुट तिथियां जो यूटीसी या स्थानीय हैं, लेकिन आप अन्य समय क्षेत्रों के साथ सीधे काम नहीं कर सकते।

बिल्कुल सटीक होने के लिए, Date ऑब्जेक्ट का आंतरिक प्रतिनिधित्व एक एकल संख्या है, जो 1 9 1970-01-01 00:00:00 UTC से 1970-01-01 00:00:00 UTC की संख्या का प्रतिनिधित्व करता है, जो बिना छलांग सेकंडों के संबंध में। दिनांक ऑब्जेक्ट में संग्रहीत कोई टाइम ज़ोन या स्ट्रिंग फॉर्मेट नहीं है। जब Date वस्तु के विभिन्न कार्यों का उपयोग किया जाता है, तो कंप्यूटर का स्थानीय समय क्षेत्र आंतरिक प्रतिनिधित्व के लिए लागू होता है। यदि फ़ंक्शन एक स्ट्रिंग का उत्पादन करता है, तो कंप्यूटर की लोकेल जानकारी को उस स्ट्रिंग को कैसे तैयार किया जाए, यह निर्धारित करने के लिए विचाराधीन किया जा सकता है। विवरण प्रति समारोह में भिन्नता है, और कुछ कार्यान्वयन-विशिष्ट हैं।

पुस्तकालय

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

इसके लिए छह पुस्तकालय हैं जिनके बारे में मुझे पता है:

  • पल-समय क्षेत्र
  • js-Joda
  • BigEasy / समयक्षेत्र
  • वॉलटैम-जेएस (बंद किया गया)
  • TimeZoneJS
  • tz.js

क्षण-समयक्षेत्र moment.js का एक एक्सटेंशन है, और यह काफी स्थिर और कार्यात्मक है। (एक सहयोगी के रूप में, मैं इस पुस्तकालय के प्रति पक्षपातपूर्ण हूं, लेकिन मुझे विश्वास है कि यह सबसे आधुनिक विकास के लिए सबसे उपयुक्त विकल्प है।)

js-joda जावा-टाइम एपीआई (जावा से) का जावास्क्रिप्ट कार्यान्वयन है, और एक अलग मॉड्यूल के माध्यम से टाइम ज़ोन का समर्थन भी शामिल है।

बिगएसी / टाइम ज़ोन भी सही रास्ते पर प्रतीत होता है

वॉलटैम-जेएस अंत की जीवन पर पहुंच गया है , और मालिक पल-टाइम ज़ोन पर पलायन कर रहे हैं।

टाइमज़ोनजेएस सबसे लंबे समय के आसपास रहा है, लेकिन कुछ लंबे समय तक कीड़े, विशेष रूप से डेलाइट सेविंग टाइम ट्रांज़िशन के पास जाना जाता है। उम्मीद है कि ये भविष्य में कुछ बिंदु पर तय हो जाएंगे।

tz.js कुछ समय के लिए आस पास भी है, लेकिन बहुत ही अच्छी तरह से प्रलेखित नहीं है, आईएमएचओ।

आपको इन पुस्तकालयों का मूल्यांकन करना चाहिए जो आपकी आवश्यकताओं को पूरा करेगा। यदि अनिश्चित है, तो क्षण / क्षण-समयक्षेत्र के साथ जाएं

आधुनिक ब्राउज़रों में मूल समर्थन

यदि आप अपने उपयोग को आधुनिक वेब ब्राउज़र पर सीमित कर सकते हैं, तो आप अब किसी विशेष पुस्तकालयों के बिना निम्न कार्य कर सकते हैं:

 new Date().toLocaleString("en-US", {timeZone: "America/New_York"}) 

यह एक व्यापक समाधान नहीं है, लेकिन यह कई परिदृश्यों के लिए काम करता है जिसमें केवल आउटपुट रूपांतरण की आवश्यकता होती है (यूटीसी या स्थानीय समय से एक विशिष्ट समय क्षेत्र में, लेकिन अन्य दिशा नहीं)। यह ECMAScript अंतर्राष्ट्रीयकरण एपीआई (ECMA-402) का हिस्सा है अधिक जानकारी के लिए इस पोस्ट देखें। यह संगतता तालिका ट्रैक करती है कि कौन से संस्करण समर्थित हैं।

आप new Date() पर ऑफसेट समय क्षेत्र निर्दिष्ट कर सकते हैं, उदाहरण के लिए:

 new Date('Feb 28 2013 19:00:00 EST') 

या

 new Date('Feb 28 2013 19:00:00 GMT-0500') 

चूंकि Date स्टोर यूटीसी समय (यूटीसी में getTime रिटर्न में), जावास्क्रिप्ट उनको यूटीसी में परिवर्तित करेगा, और जब आप जावास्क्रिप्ट की तरह बातें करेंगे तो यूटीसी समय को ब्राउजर के स्थानीय टाइमज़ोन में बदल दिया जाएगा और स्ट्रिंग को स्थानीय टाइमज़ोन में बदल दिया जाएगा, अर्थात अगर मैं UTC+8 का उपयोग कर रहा UTC+8 :

 > new Date('Feb 28 2013 19:00:00 GMT-0500').toString() < "Fri Mar 01 2013 08:00:00 GMT+0800 (CST)" 

इसके अलावा आप सामान्य getHours/Minute/Second विधि का उपयोग कर सकते हैं:

 > new Date('Feb 28 2013 19:00:00 GMT-0500').getHours() < 8 

(यह 8 मतलब है कि समय मेरे स्थानीय समय में परिवर्तित होता है – UTC+8 , घंटे संख्या 8 ।)

मुझे पता है कि इसके 3 वर्षों में बहुत देर हो चुकी है, लेकिन हो सकता है कि यह किसी और की मदद कर सके, क्योंकि मुझे पल टाइम-ज़ोन लाइब्रेरी को छोड़कर ऐसा कुछ नहीं मिला, जो वास्तव में वही नहीं है जो उसने यहां पूछे थे।

ive जर्मन समयक्षेत्र के लिए कुछ समान किया है, यह डेलाइट सेविंग टाइम और लीप साल की वजह से थोड़ा जटिल है, जहां आपके पास 366 दिन हैं।

इसे "आईडेललाइटिंग टाइम इन्फर्मिनी" फ़ंक्शन के साथ थोड़े से काम की आवश्यकता हो सकती है, जबकि अलग-अलग समयक्षेत्र डेलाइट सेविंग टाइम को अलग-अलग समय पर बदलते हैं।

वैसे भी, इस पृष्ठ को देखें: https://github.com/zerkotin/german-timezone-converter/wiki

मुख्य विधियां इस प्रकार हैं: कन्वर्टलोकलडेटटोमेनटाइमजोन कन्वर्टजर्मनडेटटोक लोकल टाइमज़ोन

ive इसे दस्तावेज करने में एक प्रयास किया है, इसलिए यह बहुत भ्रमित नहीं होगा।

मैं यूनिट परीक्षणों के साथ एक समान समस्या (विशेष रूप से मजाक में था जब इकाई परीक्षण स्थानीय रूप से स्नैपशॉट बनाने के लिए स्थानीय स्तर पर चलाते हैं और फिर सीआई सर्वर (संभावित रूप से) एक अलग समयक्षेत्र चलाता है जिसके कारण स्नैपशॉट असफल होने की तुलना होती है)। मैंने हमारी Date और कुछ तरह के तरीकों का मज़ाक उड़ाया था:

 describe('...', () => { let originalDate; beforeEach(() => { originalDate = Date; Date = jest.fn( (d) => { let newD; if (d) { newD = (new originalDate(d)); } else { newD = (new originalDate('2017-05-29T10:00:00z')); } newD.toLocaleString = () => { return (new originalDate(newD.valueOf())).toLocaleString("en-US", {timeZone: "America/New_York"}); }; newD.toLocaleDateString = () => { return (new originalDate(newD.valueOf())).toLocaleDateString("en-US", {timeZone: "America/New_York"}); }; newD.toLocaleTimeString = () => { return (new originalDate(newD.valueOf())).toLocaleTimeString("en-US", {timeZone: "America/New_York"}); }; return newD; } ); Date.now = () => { return (Date()); }; }); afterEach(() => { Date = originalDate; }); }); 

कोशिश करें: तिथि-से- Intl.DateTimeFormat , यह Intl.DateTimeFormat उपलब्ध Intl.DateTimeFormat की सहायता से अपेक्षित तारीख को हल करता है।

मैंने पहले से ही कुछ वर्षों में अपनी किसी एक प्रोजेक्ट में उस पद्धति का इस्तेमाल किया था, लेकिन अब मैंने इसे ओएस परियोजना के रूप में छोटा करने का फैसला किया है 🙂