Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

222
Visualizações
Get amount of seconds from a formatted time string

How to convert a time string like 1m15s to 75s, 75 or 75000 ideally using momentjs.



I attempted to parse that string using new Date('1m1s') but it gives Invalid Date.

I don't want to resort to regex:

const second = (function () {
    const countdownStep = '1h1m1s'.match(
        /(?:(?<h>\d{0,2})h)?(?:(?<m>\d{0,2})m)?(?:(?<s>\d{0,2})s)?/i
    );
    return (
        (countdownStep.groups.h
            ? parseInt(countdownStep.groups.h) * 3600
            : 0) +
        (countdownStep.groups.m
            ? parseInt(countdownStep.groups.m) * 60
            : 0) +
        (countdownStep.groups.s ? parseInt(countdownStep.groups.s) : 0)
    );
})();
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

You can use the duration interface of momentjs:

let s = '1m15s';

// convert to duration format and pass to momentjs
let secs = moment.duration('PT' + s.toUpperCase()).as("seconds");

console.log("seconds: ", secs);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

Without library, it could be:

const unit = { s: 1, m: 60, h: 60*60 };
let s = '1m15s';
let secs = s.toLowerCase().match(/\d+./g)
            .reduce((acc, p) => acc + parseInt(p) * unit[p.at(-1)], 0);
console.log("seconds: ", secs);

about 4 years ago · Juan Pablo Isaza Relatório

0

I tried this, is it helpful to you

let d = '1H1s';
d = d.toLowerCase();
let sec = 0;
if(d.indexOf('h') > -1) {
    if (d.indexOf('m') == -1) {
        d = d.substring(0, d.indexOf('h') + 1) +"0m"+d.substring(d.indexOf('h') + 1);
    }
}
let newDs = d.replace('h',':').replace('m',':').replace('s','').split(':');
newDs.forEach((v, i) => sec += Math.pow(60, (newDs.length - i - 1)) * v);
console.log(sec);

about 4 years ago · Juan Pablo Isaza Relatório

0

Another approach using plain js:

const getSecondsFromString = (str) => {
  const hourIndex = str.indexOf("h")
  const minuteIndex = str.indexOf("m")
  const secondIndex = str.indexOf("s")
  let hours = 0
  let minutes = 0
  let seconds = 0

  if (hourIndex !== -1) {
    hours = Number(str.substring(0, hourIndex))
  }

  if (minuteIndex !== -1) {
    if (hourIndex !== -1) {
      minutes = Number(str.substring(hourIndex + 1, minuteIndex))
    } else {
      minutes = Number(str.substring(0, minuteIndex))
    }
  }

  if (secondIndex !== -1) {
    if (minuteIndex !== -1) {
      seconds = Number(str.substring(minuteIndex + 1, secondIndex))
    } else if (hourIndex !== -1) {
      seconds = Number(str.substring(hourIndex + 1, secondIndex))
    } else {
      seconds = Number(str.substring(0, secondIndex))
    }
  }

  return hours * 3600 + minutes * 60 + seconds
}

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda