2010-07-22 7 views
25

Buscando una manera creativa de estar seguro de los valores que provienen del método getHours, getMinutes y getSeconds() para el javascript Date objeto return "06" en lugar de 6 (por ejemplo). ¿Hay algún parámetro que no sepa? Obviamente, podría escribir una función que lo haga verificando la longitud y anteponiendo un "0" si fuera necesario, pero pensé que podría haber algo más simplificado que eso.Fecha de Javascript: Asegúrese de que getMinutes(), getHours(), getSeconds() ponga 0 delante si es necesario

Gracias.

Respuesta

28

Por lo que sé, no hay. Y lo hago todo el tiempo para convertir las fechas al formato XML de fecha y hora.

También es importante tener en cuenta que los métodos que enumera devuelven un número, no una cadena.

Puede, por supuesto, agregarlos usted mismo modificando 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

hecho. Solo quería delinear los valores con algo, y las comillas lo eran. Gracias por la aclaración –

51

similares a la solución de @ jdmichal, publicar porque yo prefiero algo un poco más corto:

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

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

En lugar de añadir métodos individuales para Date.prototype, sólo podría añadir este método para 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

¡Usted joven flautista y su elegante corte! – jdmichal

+0

Extremadamente inteligente, imo. ¡Gracias por la respuesta! –

+0

¡Impresionante! Ahora estoy inicializando mi elemento input @ type = "time" como este: 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 />'); 

SALIDA:

+1

¡Simple y elegante! ¡Me gusta! – vapcguy

Cuestiones relacionadas