2013-08-02 8 views
7

जैसा कि शीर्षक पूछता है, Date.toString() (अधिक सटीक, Date.toTimeString()) का आउटपुट हमेशा एक ही प्रारूप में, सभी ब्राउज़रों में होता है?क्या हमेशा एक ही प्रारूप में Date.toString() का आउटपुट है?

मैं यह पूछता हूं क्योंकि EMCAScript specification कहता है कि "स्ट्रिंग की सामग्री कार्यान्वयन-निर्भर हैं"।


मैं इस के बारे में सुनिश्चित करने की जरूरत है क्योंकि मैं इस प्रकार एचटीएमएल span तत्वों डालने से स्ट्रिंग प्रारूप में तैयार करना:

(new Date()).toTimeString().replace(" GMT", "<span id='offset'> GMT") + '</span>');

यह उत्पादन होगा (गूगल क्रोम v28.0.1500.95 में) की तरह

18:19:26<span id="offset"> GMT-0700 (Pacific Daylight Time)</span>

जो कुछ मैं तो सीएसएस के साथ शैली कर सकते हैं।


आउटपुट शैली के बेहतर तरीके के लिए सुझाव भी महान होंगे!

+2

आपको पहले से ही एक जवाब मिला है! जैसा कि आपने उल्लेख किया है * यह कार्यान्वयन-निर्भर * है। तो मेरा सुझाव है कि आप वर्तमान कार्यान्वयन के परिणाम के आधार पर कोड नहीं लिखेंगे। – Mics

+0

हालांकि मुझे इसका उत्तर देने में देर हो चुकी है, लेकिन मैं इस टिप्पणी पर उत्तर देने वाले अन्य लोगों के लाभ के लिए अपनी टिप्पणियां छोड़ दूंगा: - इस बारे में स्पष्टता स्पष्ट है। यह पढ़ता है "स्ट्रिंग की सामग्री टू स्ट्रिंग() कार्यान्वयन-निर्भर हैं," (देखें: ecma-international.org/ecma-262/5.1/#sec-15.9.5.2) यदि आपको तारीख को स्ट्रिंग करना है तो बेहतर विकल्प toISOString() का उपयोग करना है, जो कि spec के अनुसार सख्ती से "YYYY-MM-DDTHH: mm: ss.sssZ" स्वरूपित है। (देखें: ecma-international.org/ecma-262/5.1/#sec-15.9.5.43) –

उत्तर

3

संक्षेप में, नहीं, toString हमेशा एक ही प्रारूप को आउटपुट नहीं करता है।

new Date().toString() 

प्रिंट

  • "Sat Feb 11 2012 02:15:10 GMT + 0100" फ़ायरफ़ॉक्स 10 में
  • "Sat Feb 11 2012 02:18:29 GMT + 0100 (डब्ल्यू यूरोप मानक समय) "क्रोम में 16
  • " Sat Feb 11 02:18:59 UTC + 0100 2012 "इंटरनेट एक्सप्लोरर में 9

मैं जानता हूँ कि इन पुराने ब्राउज़र संस्करण हैं, लेकिन यह पता चलता है कि यह भौंह है सेवा निर्भर मिनट:

हालांकि, जब toTimeString() का उपयोग कर इसे यह हमेशा प्रकट होता है के साथ शुरू होता है घंटे सेकंड [स्पेस] ...

इसलिए, आप के बजाय के साथ 2 भागों पर पहले [स्पेस] आधारित में स्ट्रिंग विभाजित कर सकते हैं:

indexOf(" ")

फिर अपने अवधि

Moment साथ दूसरा भाग लपेट कुछ दिनांकों के स्ट्रिंग स्वरूपण करता है, लेकिन यह भी आपके अनुरोध का प्रबंध नहीं है एड ऑफ़सेट स्ट्रिंग बहुत अच्छी तरह से है क्योंकि यह toString() विधि पर निर्भर करता है।

मुझे आशा है कि मदद करता है

+0

गहन उत्तर के लिए धन्यवाद। मैं शायद जावास्क्रिप्ट में अपना खुद का डेट फॉर्मेटर बनाउंगा; Moment.js थोड़ा बहुत भारी है (कुछ विशेषताएं जो मैं शायद उपयोग नहीं करूँगा)। –

+1

इस बारे में कल्पना स्पष्ट है। यह पढ़ता है "स्ट्रिंग की सामग्री टू स्ट्रिंग() कार्यान्वयन-निर्भर हैं," (देखें: http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.5.2) यदि आप तारीख को स्ट्रिंग करना है, तो बेहतर विकल्प है IISOString() का उपयोग करना, जो कि spec के अनुसार सख्ती से "YYYY-MM-DDTHH: mm: ss.sssZ" स्वरूपित है। (देखें: http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.5.43) –

-1

Moment.js जे एस में दिनांक फ़ॉर्मेट करने के लिए एक अच्छा पुस्तकालय है। https://github.com/moment/moment

अन्यथा हाँ, आप स्वयं को पार्सिंग कर देंगे क्योंकि ब्राउज़र इसे अलग-अलग प्रस्तुत करते हैं।

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