javascript - getMinutes() 0-9 - ¿Cómo mostrar números de dos dígitos?
var date = "2012-01-18T16:03";
var date = new Date(date);
console.log(date.getMinutes());
console.log(date.getMinutes().length)
Esto devuelve 3.
- ¿Cómo hago para que devuelva '03'?
- ¿Por qué
.lengthdevuelve indefinido?
Intenté esto, pero no funcionó:
Si strlen == 1 entonces num=('0' + num);
Respuesta #1
var date = new Date("2012-01-18T16:03");
console.log( (date.getMinutes() < 10 ? '0' : '') + date.getMinutes() );
Respuesta #2
Esta solución es compatible con varios navegadores y convierte entre int/string de manera más limpia. Mi consejo es no usar una variable llamada 'date' con un código como date=Date(...) donde dependas mucho de la sensibilidad a mayúsculas y minúsculas del lenguaje (funciona, pero es arriesgado cuando trabajas con código de servidor/navegador en diferentes lenguajes con reglas distintas). Entonces, asumiendo el Date de JavaScript en una variable current_date:
mins = ('0'+current_date.getMinutes()).slice(-2);
La técnica consiste en tomar los 2 caracteres más a la derecha (slice(-2)) de "0" y anteponerlos al valor en cadena de getMinutes(). Entonces:
"0"+"12" -> "012".slice(-2) -> "12"
y
"0"+"1" -> "01".slice(-2) -> "01"
Respuesta #3
Otra forma corta es llenar los minutos con un cero inicial usando:
String(date.getMinutes()).padStart(2, "0");
Significado: Hacer que la cadena tenga dos caracteres, si falta un carácter entonces poner 0 en esta posición.
Consulta la documentación en str.padStart(longitudObjetivo, cadenaRelleno)
Respuesta #4
Función ES6 elegante para formatear una fecha en hh:mm:ss:
const leadingZero = (num) => `0${num}`.slice(-2);
const formatTime = (date) =>
[date.getHours(), date.getMinutes(), date.getSeconds()]
.map(leadingZero)
.join(':');
Respuesta #5
Usando la API de Internacionalización de ECMAScript, más información:
const date_string = "2012-01-18T16:03";
const date = new Date(date_string);
const twoDigitMinutes = date.toLocaleString("en-us", {year: 'numeric', month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit', second: "2-digit"});
console.log(twoDigitMinutes);Respuesta #6
Me gustaría proporcionar una solución más ordenada al problema, si me lo permiten. La respuesta aceptada es muy buena. Pero yo lo habría hecho de esta manera.
Date.prototype.getFullMinutes = function () {
if (this.getMinutes() < 10) {
return '0' + this.getMinutes();
}
return this.getMinutes();
};
Ahora si quieres usar esto.
console.log(date.getFullMinutes());
Respuesta #7
Sugiero:
var minutes = data.getMinutes();
minutes = minutes > 9 ? minutes : '0' + minutes;
es una llamada de función menos. Siempre es bueno pensar en el rendimiento. También es corto;
