2012-09-05 11 views
8

मेरे पास कुछ घड़ी स्क्रिप्ट है तो "0" जोड़ना। सबकुछ ठीक है और यह पूरी तरह से काम करता है लेकिन ... मुझे एक समस्या है। यदि घड़ी पर एक अंक घंटे या मिनट सेट किया गया है जैसे 1: 5 घड़ी पहले "0" अंक जोड़ना नहीं है। यह मैंने किया है लेकिन यह काम नहीं करता है। क्या आप मेरी मदद कर सकते हैं, बहुत thx? के रूप में यह एक Number, नहीं एक String हैयदि घड़ी में एक अंक है

window.setInterval(function update_clock() { 
    var currentTime = new Date(); 
    var currentHours = currentTime.getHours(); 
    var currentMinutes = currentTime.getMinutes(); 
    $.ajax({ 
     success: function (clock) { 
      document.getElementById("hour").firstChild.nodeValue = currentHours; 
      document.getElementById("minutes").firstChild.nodeValue = currentMinutes; 
      if (currentMinutes.length == 1) { 
       currentMinutes = "0" + currentMinutes; 
      } 
     } 
    }); 
}, 999); 
+2

के संभावित डुप्लिकेट [जावास्क्रिप्ट में String.Format?] (Http://stackoverflow.com/questions/6220693/string-format-in-javascript) –

+0

मैं यह नहीं मिल सकता है ... – Lukas

+0

"समस्या" इस कोड के साथ 'संख्या। लम्बाई' (उदाहरण के लिए '(42)। लम्बाई') * हमेशा * अनिर्धारित है। –

उत्तर

13

currentMinutes एक संख्या है, इसलिए इसमें length संपत्ति नहीं है। minutes तत्व पर currentMinutes सेट करने से पहले आपको length जांचना होगा।

कुछ की तरह:

var currentHours = currentTime.getHours(); 
var currentMinutes = currentTime.getMinutes(); 

$.ajax({ 
    success: function (clock) { 
     if (currentMinutes.toString().length == 1) { 
      currentMinutes = "0" + currentMinutes; 
     } 

     document.getElementById("hour").firstChild.nodeValue = currentHours; 
     document.getElementById("minutes").firstChild.nodeValue = currentMinutes; 
    } 
}); 
+1

ठीक है, यह काम ठीक, मदद के लिए बहुत tHX, chears – Lukas

8

currentMinutes, एक length संपत्ति नहीं होगा।

आप इसे String होने के लिए मजबूर कर सकते हैं।

if ((currentMinutes+'').length == 1) { 
    currentMinutes = "0" + currentMinutes; 
} 

लेकिन, क्योंकि आप एक Number है, तो आप अपनी हालत बनाना चाहिए ...

if (currentMinutes < 10) { 
    currentMinutes = "0" + currentMinutes; 
} 

यदि आप विशेष रूप से पागल थे, तुम कर सकते हो ...

var hoursMinutes = ((new Date)+"").match(/\d+:\d+(?=:)/)[0].split(":"); 
+0

या बस 'if (currentMinutes <10) {' – xdazz

+1

@xdazz पढ़ना जारी रखें :) – alex

+0

'अगर (वर्तमान मिनट <10) {' काम नहीं कर रहा है :( – Lukas

1

तुम भी जावास्क्रिप्ट के लिए sprintf() जांच कर सकता है। कार्यों कि स्वरूपण की मदद से आप अपने उत्पादन पर अधिक नियंत्रण है, जब आप की जरूरत को स्वीकार का उपयोग

sprintf("%02d:%02d", currentHours, currentMinutes); 

:

आप के रूप में सरल कुछ के साथ जा सकते हैं।

16

आप स्ट्रिंग के एक हिस्से को निकालने के लिए .slice का उपयोग कर सकते हैं। स्ट्रिंग के अंत से टुकड़ा करने के लिए, इसे ऋणात्मक संख्या पास करें।

इसलिए, निम्नलिखित संभव है, और काफी सरल है:

('0'+currentMinutes).slice(-2) 

'0' साथ श्रृंखलाबद्ध यकीन है कि आपरेशन का लक्ष्य हमेशा एक स्ट्रिंग होगा कि बनाता है। ('0'+currentMinutes) उदाहरण के लिए 2 या 3 अक्षर स्ट्रिंग ("07" या "017" उत्पन्न करेगा)। उस स्ट्रिंग के आखिरी दो अक्षरों को टुकड़ा करने से आपको 0-गद्देदार दो-अंक संख्या मिल जाएगी।

ध्यान दें कि उपरोक्त "00" उत्पन्न होगा यदि currentMinutes100 है, तो यह मानता है कि आप उन मानों को जानते हैं जिनके साथ आप काम करेंगे।

यह कुछ अधिक पुन: प्रयोज्य के लिए निकाला जा सकता:

Number.prototype.zeroPad = function() { 
    return ('0'+this).slice(-2); 
}; 

है कि आप लिखने के लिए अनुमति होगी:

Number.prototype.zeroPad = function(length) { 
    length = length || 2; // defaults to 2 if no parameter is passed 
    return (new Array(length).join('0')+this).slice(length*-1); 
}; 
:

currentMinutes.zeroPad(); 

तुम भी गद्दी चर की लंबाई बना सकता है

जिसे इस प्रकार कहा जा सकता है:

currentMinutes.zeroPad(); // e.g. "07" or "17" 
currentMinutes.zeroPad(3); // e.g. "007" or "017" 

ध्यान दें कि currentMinutes.zeroPad() काम करेगा, 7.zeroPad() नहीं होगा।

+0

+1 यह अविश्वसनीय रूप से संक्षिप्त है, यह प्यार है। –

0
एंड्रॉयड में

String time=String.format("%02d:%02d",hourOfDay,minute); 
जावास्क्रिप्ट प्रयोग में

(sprintf.js)

int i = 1; 
string s = sprintf("%02d", i); 
document.write(s); // Prints "01" 

sprintf.js (में निर्माण): http://www.diveintojavascript.com/projects/javascript-sprintf

+0

ओ पी ** जावास्क्रिप्ट ** के लिए समाधान की जरूरत है, एंड्रॉयड नहीं @alex करने के लिए –

0

अन्य awnsers के आधार पर मैंने बनाया कोड की यह पंक्तियां:

var now = new Date(); 
 
var dd = now.getDate(); 
 
var mm = now.getMonth()+1; 
 
var y = now.getFullYear(); 
 
var h = now.getHours(); 
 
var m = now.getMinutes(); 
 

 
function aZero(n) { 
 
    return n.toString().length == 1 ? n = '0' + n: n; 
 
} 
 

 
document.getElementById("out").innerHTML = 
 
    aZero(dd) + "-" + 
 
      aZero(mm) + "-" + 
 
      y + " - " + 
 
      aZero(h) + ":" + 
 
      aZero(m);
<div id="out">my time :D</div>

सीयू अगली बार।

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