javascript toLocaleTimeString 2-digit only second or minute not working

Viewed 2053

Ex.:

const options = {
              timeZone:"America/Sao_Paulo",
              hour12 : false,
              hour:  "2-digit",
              //minute: "2-digit",
              //second: "2-digit"
           };
              
console.log(new Date("2019-06-05T00:01:00").toLocaleTimeString("pt-BR",options));

It shows 00 and that's fine. But if i try this only with minute or second, it shows with only one digit.

const options = {
              timeZone:"America/Sao_Paulo",
              hour12 : false,
              //hour:  "2-digit",
              minute: "2-digit",
              //second: "2-digit"
           };
console.log(new Date("2019-06-05T00:01:00").toLocaleTimeString("pt-BR",options));

const options2 = {
              timeZone:"America/Sao_Paulo",
              hour12 : false,
              //hour:  "2-digit",
              //minute: "2-digit",
              second: "2-digit"
           };
console.log(new Date("2019-06-05T00:01:00").toLocaleTimeString("pt-BR",options2));

What is needed to get minutes or seconds with 2 digits?

2 Answers

Thanks everyone. Sadly i've had to split the time with hours, minutes and seconds and use array indexes to get what i wanted:

let d = new Date('2019-06-06T00:01:02');
        
const options = {
     timeZone:"America/Sao_Paulo",
     hour12 : false,
     hour:  "2-digit",
     minute: "2-digit",
     second: "2-digit"
  };
        
let horario = d.toLocaleTimeString("pt-BR",options);
        
let array_horario = horario.split(':');
        
console.log(array_horario[0]);
console.log(array_horario[1]);
console.log(array_horario[2]);

Unfortunately, chrome and firefox do not respect this very well. The best way is to format hours, minute and seconds which will result it printing 2 digits always.

const options = {
    timeZone:"America/Sao_Paulo",    
    hour12 : false,
    hour:  "2-digit",
    minute: "2-digit",
    second: "2-digit"
};

and parse it post.

Related