आपको Javascript के इस व्यवहार को बदल नहीं सकते, क्योंकि यह जावास्क्रिप्ट काम करने के लिए ही आसान तरीका है। क्या होता है बस जावास्क्रिप्ट समय शिफ्ट को देखता है, मिलान करने वाले टाइमस्टैम्प की गणना करता है, और फिर स्थानीय समय क्षेत्र में इस टाइमस्टैम्प के प्रतिनिधित्व के लिए ओएस से पूछता है। यहां समझने की कुंजी क्या है कि -05:00
समय क्षेत्र का संकेत नहीं है बल्कि यूटीसी से एक बदलाव है।
समय क्षेत्र जटिल जानवर हैं जो केवल मनमानी राजनीतिक निर्णय हैं। ओएस स्थानीय समय क्षेत्र में समय प्रदर्शित करने के लिए एक सेवा प्रदान करता है, लेकिन अन्य समय क्षेत्रों में नहीं। ऐसा करने के लिए आपको डीएसटी जैसी चीजों को ध्यान में रखना होगा जो काफी नरक हैं।
हमेशा समय प्रबंधन के साथ, इस समस्या से निपटने का एकमात्र सभ्य तरीका समर्पित पुस्तकालय का उपयोग करना है। जावास्क्रिप्ट में, आपको Moment.js और Moment.Timezone.js बहुत उपयोगी मिलेगा।
उदाहरण http://codepen.io/Xowap/pen/XKpKZb?editors=0010
document.write(moment('2013-07-18T17:00:00-05:00').tz('America/New_York').format('LLL'));
एक बोनस के रूप में, आप Moment.js से सुविधाओं को पार्स स्वरूपण की एक टन प्राप्त /।
कृपया यह भी ध्यान दें कि जब तक आप आईएसओ 8601 का उपयोग करते हैं, तब तक आपकी तिथि को सटीक पल पर पिन किया जा सकता है, और इस प्रकार आपकी पसंद के किसी भी समय क्षेत्र में प्रदर्शित किया जा सकता है। दूसरे शब्दों में, जेएस आपकी तिथि को "कनवर्ट करना" कोई फर्क नहीं पड़ता।
आईएसओ स्वरूपित तिथियों का बिंदु वापस आपके टाइमज़ोन में परिवर्तित किया जाना है ... – SeinopSys
आप नहीं कर सकते हैं। जावास्क्रिप्ट 'Date' वस्तु किसी भी समय क्षेत्र जानकारी एकत्र नहीं करते हैं, और जब outputting/toStringing/उन्हें प्रवेश करने वे या तो (स्पष्ट तरीकों के साथ) आपके स्थानीय समय क्षेत्र ब्राउज़र (दुर्भाग्य से डिफ़ॉल्ट) या यूटीसी का प्रयोग करेंगे। – Bergi
लेकिन अगर मैं प्रदर्शित करने की कोशिश कर रहा हूं तो ब्राउज़र टाइमज़ोन में नहीं है। क्यों तारीख पर्स स्ट्रिंग नहीं कर सकते हैं और तारीख ऑब्जेक्ट को आईएसओ स्ट्रिंग में निर्दिष्ट टाइमज़ोन ऑफ़सेट पर सेट करें। – user2434674