मैं भी इस समस्या के समाधान के लिए देख रहा हूँ, यहाँ मैं आखिरकार आया क्या है:
function getTimeStr() {
var dt = new Date();
var d = dt.toLocaleDateString();
var t = dt.toLocaleTimeString();
t = t.replace(/\u200E/g, '');
t = t.replace(/^([^\d]*\d{1,2}:\d{1,2}):\d{1,2}([^\d]*)$/, '$1$2');
var result = d + ' ' + t;
return result;
}
आप इसे यहाँ आज़मा सकते हैं: http://jsfiddle.net/B5Zrx/
\ u200E कुछ स्वरूपण चरित्र है जो मैंने कुछ IE संस्करण पर देखा है (यह यूनिकोड बाएं से दाएं चिह्न है)।
मुझे लगता है कि अगर स्वरूपित समय में "XX: XX: XX" जैसा कुछ होता है, तो यह सेकंड के साथ समय होना चाहिए और मैं पिछले भाग को हटा देता हूं, अगर मुझे यह पैटर्न नहीं मिलता है, तो कुछ भी नहीं बदला जाता है। बहुत सुरक्षित है, लेकिन कुछ अजीब परिस्थितियों में सेकंड छोड़ने का जोखिम है।
मैं सिर्फ यह आशा करता हूं कि कोई ऐसा लोकेल नहीं है जो स्वरूपित समय भागों के क्रम को बदल दे (जैसे इसे ss: mm: hh) बनाते हैं। यह बाएं से दाएं निशान मुझे इस बारे में थोड़ा परेशान कर रहा है, इसीलिए मैं दाएं-से-बाएं निशान (\ u202E) को नहीं हटाता हूं - मैं इस मामले में मैच नहीं ढूंढना पसंद करता हूं और छोड़ देता हूं समय ऐसे मामलों में सेकंड के साथ स्वरूपित होता है।