Búsqueda de sitios web

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.

  1. ¿Cómo hago para que devuelva '03'?
  2. ¿Por qué .length devuelve 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;

Artículos relacionados