2012-01-30 9 views
9

मैं एक स्ट्रिंग से दिनांक वस्तु बनाने की कोशिश कर रहा हूं। ": 23: 12 2012-01-30T16"स्ट्रिंग से फ़ायरफ़ॉक्स नई तिथि() स्थानीय समय क्षेत्र में समय बनाता है

परिणाम अलग है जब मैं आईई, क्रोम और फ़ायरफ़ॉक्स में कोड (Link to Fiddle)

currentDate = "2012-01-30T16:23:12"; 
var date = new Date(currentDate); 
alert(date); 

निम्नलिखित चला मैं की तरह मिलीसेकेंड भाग को छोड़कर ISO प्रारूप में तारीख मिल आईई और क्रोम स्ट्रिंग को यूटीसी के रूप में मानते हैं लेकिन स्थानीय समय क्षेत्र में फ़ायरफ़ॉक्स मानता है।

वहाँ हर जगह उपयोगकर्ता एजेंट की जाँच के लिए छोड़कर उसके चारों ओर पाने के लिए किसी भी सामान्य तरीका है?

+0

के संभावित डुप्लिकेट [कष्टप्रद जावास्क्रिप्ट समय क्षेत्र समायोजन मुद्दा] (http://stackoverflow.com/questions/7629286/annoying-javascript-timezone-adjustment-issue) –

उत्तर

12

ऑफसेट यूटीसी के लिए +00:00 आप शून्य समय क्षेत्र जोड़कर आज़मा सकते हैं:

currentDate = "2012-01-30T16:23:12+00:00"; 

कि मदद करता है? (खेद है कि मैं यह वास्तव में मेरे समय क्षेत्र बदले बिना परीक्षण नहीं कर सकते।)

+0

धन्यवाद। यह "+00: 00" के साथ काम करता है। इस तरह सभी तीन ब्राउज़र समान युग मूल्य उत्पन्न करते हैं। http://jsfiddle.net/harsha/9ybtN/2/ – harsha

+0

क्षमा करें, हाँ इसे कोलन की आवश्यकता है –

2

हम्म, संभावित समाधान, स्ट्रिंग और उपयोग के तरीकों पार्स करने के लिए है।

setUTCDate()  
setUTCFullYear() 
setUTCHours() 

शायद, बेहतर समाधान है

+2

+1, यह एक समाधान है, लेकिन * सही तरीका क्या है *, देखें: http://stackoverflow.com/questions/7629286 –

0

कोई गारंटी नहीं कि इनपुट सही ढंग से वर्तमान स्वरूप में अगर पार्स किया जाएगा नहीं है। Date.parse() दिनचर्या केवल एक विशेष प्रारूप में तारों को पार्स करने के लिए आवश्यक है-अन्य प्रारूपों को पार्सिंग कार्यान्वयन-निर्भर है। वैकल्पिक रूप से

new Date(currentDate + '.000Z') 

, एक पुस्तकालय है कि वर्तमान स्वरूप में डेटा पार्स कर सकते हैं, उदाहरण के लिए उपयोग करें: आप आवश्यकता को संतुष्ट करने कार्यान्वयन पर भरोसा करने की हिम्मत है, तो डेटा विशिष्ट प्रारूप के अनुरूप करने के लिए जोड़ jQuery या Globalize.js।

इसी तरह के विचार लेखन तिथियों पर लागू होते हैं। यदि आप Date.toString() का उपयोग करते हैं, तो स्पष्ट रूप से या alert(date) में आउटपुट प्रारूप की कोई गारंटी नहीं है। यहां तक ​​कि एक कंप्यूटर के भीतर, विभिन्न ब्राउज़र विभिन्न स्थानीय प्रारूपों का उपयोग करेंगे।

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