2009-04-27 8 views
6

En mi javascript iam usando la función GetHour y GetMinutes. Por ejemplo: la hora actual es 2: 03.Si en este caso utilizo GetHour(), devuelve 2.En vez necesito 02. ¿Alguien puede ayudar?formato de hora en javascript

Respuesta

6
var hour = GetHour() < 10 ? '0' + GetHour() : GetHour(); 
+1

Usted podría abstraer la parte repetida en su verdadera y expresiones falsas: var hour = (GetHour() <10? '0': '') + GetHour() –

+0

No hay ninguna razón para llamar a la función dos veces. –

+0

¡Bien, el código que estaba comentando ya lo llamó tres veces! A menos que las llamadas GetHour() demuestren ser un problema de rendimiento, no hay nada de malo en llamar a un método varias veces para poder expresar el código de manera más concisa. –

0

No hay función para eso. la siguiente manera para añadir un 0:

var date = new Date(); 
var hours = new String(date.getHours()); 

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

Esto nunca agregará un cero final. "longitud" no es una propiedad válida en el valor devuelto por 'getHours()', por lo que el código en la sentencia if nunca se ejecutará. – JPot

+0

+1 está en lo cierto, primero tenía que hacer una cadena antes de preguntar la 'longitud'. – RuudKok

0

Hay una librería javascript here el que parece que va a manejar todo tipo de conversiones de fecha muy bien, incluyendo el formato de fechas para que el mes es siempre dos dígitos.

0

Si utiliza el marco Prototype hay un método toPaddedString que hace esto.

a = 2; 
a.toPaddedString(2) 
// results in "02" 
1

La respuesta obvia es utilizar una instrucción IF ...

var dat = new Date(); 
var hr = dat.getHour(); 

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

reemplazar dat.getHour(); con dat.getHours(); – wlf

3
var d,h 
d = new Date() 
h = (h = d.getHours()) < 10 ? '0' + h : h 
1

siempre se puede simplemente hacer

var time = new Date(); 

('0' + time.getDate()).slice(-2) 
Cuestiones relacionadas