2010-07-22 9 views
25

Szukasz kreatywnego sposobu, aby upewnić się, że wartości pochodzące z metody javascript Date, pochodzą z getHours, getMinutes i getSeconds() obiekt zwraca "06" zamiast 6 (na przykład). Czy są jakieś parametry, o których nie wiem? Oczywiście mógłbym napisać funkcję, która robi to sprawdzając długość i przygotowując "0" w razie potrzeby, ale myślałem, że może być coś bardziej usprawnionego niż to.JavaScript Data: Upewnij się, że getMinutes(), getHours(), getSeconds() umieszczają 0 z przodu, jeśli to konieczne

Dzięki.

Odpowiedz

28

O ile wiem, nie ma. I robię to cały czas dla konwertowania dat na format XML dateTime.

Należy również pamiętać, że wymienione metody zwracają liczbę, a nie ciąg znaków.

Możesz oczywiście dodać je samodzielnie, modyfikując Date.prototype.

Date.prototype.getHoursTwoDigits = function() 
{ 
    var retval = this.getHours(); 
    if (retval < 10) 
    { 
     return ("0" + retval.toString()); 
    } 
    else 
    { 
     return retval.toString(); 
    } 
} 

var date = new Date(); 
date.getHoursTwoDigits(); 
+0

rzeczywistości. Chciałem tylko wytyczyć wartości za pomocą czegoś, a były to cytaty. Dziękuję za wyjaśnienia. –

51

Podobny do użytkownika @ jdmichal rozwiązania, publikując bo wolałbym coś nieco krótszy:

function pad(n) { return ("0" + n).slice(-2); } 

pad(6); // -> "06" 
pad(12); // -> "12" 

Zamiast dodawać poszczególne metody Date.prototype, można po prostu dodać tę metodę do Number.prototype:

Number.prototype.pad = function (len) { 
    return (new Array(len+1).join("0") + this).slice(-len); 
} 

// Now .pad() is callable on any number, including those returned by 
var time = date.getHours().pad(2) + ":" 
     + date.getMinutes().pad(2) + ":" 
     + date.getSeconds().pad(2); 
+8

Wy, młodzi laskacze-snaperzy i fantazyjne krojenie! – jdmichal

+0

Niezwykle sprytny, imo. Dziękuję za odpowiedź! –

+0

Awesome! Inicjuję teraz element input @ type = "time": timeEl.value = ("0" + now.getHours()). Slice (-2) + ":" + ("0" + now.getMinutes()). slice (-2) + ": 00" – Silvia

11
function pad2(number) { 

    return (number < 10 ? '0' : '') + number 

} 

document.write(pad2(2) + '<br />'); 
document.write(pad2(10) + '<br />'); 

WYJŚCIE:

+1

Prosty i elegancki! Lubię to! – vapcguy

Powiązane problemy