【问题标题】:How can I convert '00: 30: 00 ' format to seconds?如何将 '00: 30: 00 ' 格式转换为秒?
【发布时间】:2019-11-08 10:22:39
【问题描述】:

我想以秒为单位转换格式示例 '00: 30: 00'。这是我的方式。有没有办法在“模板字符串”中添加这些值?

预期效果:

convert1000('00:30:00') --> 1800

convert1000('00:00:10') --> 10

convert1000('00:08:10') --> 490

convert1000('01:01:10') --> 3670

const convert1000 = (time) => {
    const [hour, minute, sec] = time.split(':');

    if (hour !== "00") {
      return `${(hour* 3600)} + ${(minute * 60)} + ${(sec)}`;
    }

    if (minute !== "00") {
      return `${minute * 60} + ${sec} `;
    }

    return `${sec} `;
  }

【问题讨论】:

标签: javascript momentjs


【解决方案1】:

使用来自momentjs 持续时间对象的asSeconds

moment.duration('00:30:00').asSeconds();

【讨论】:

  • 不知道为什么我投了反对票,因为这个问题被标记为 momentjs...
  • 我的错,我原来的答案实际上并没有奏效。更新了。
【解决方案2】:

您可以通过将前一个值乘以60 然后添加该值来拆分和减少值。

const convert1000 = time => time.split(':').reduce((s, t) => s * 60 + +t, 0);
  
console.log(convert1000('00:30:00')); // 1800
console.log(convert1000('00:00:10')); // 10
console.log(convert1000('00:08:10')); // 58 is wrong, because 8 minutes is 480 plus 10 sec
console.log(convert1000('01:01:10')); // 3670

【讨论】:

    【解决方案3】:

    你需要这样做

    const convert1000 = (time) => {
      const [h,m,s] = time.split(':');
      let seconds = (h*3600) + (m * 60) + parseInt(s);
      return seconds;
    }
    
    alert(convert1000("00: 30: 00"))
    

    在这里查看小提琴https://jsfiddle.net/q4zvsowe/

    【讨论】:

      【解决方案4】:

      您需要先将字符串数字转换为整数。 这应该按照您想要的方式工作:

      let convert1000 = (timeString) => {
          let [hour, minute, second] = timeString.split(':').map(Number);
          return `${(hour* 3600) + (minute * 60) + (second)}`;
      }
      

      注意这会返回一个字符串;如果您希望它是一个数字,只需删除模板即可。

      【讨论】:

        【解决方案5】:

        您需要将+ 放在大括号内以使它们相加。

        你应该把它放在一个${}里面

        所以你的代码如下:

        const convert2000 = (time) => {
            const [hour, minute, sec] = time.split(':');
        
            if (hour !== "00") {
              return `${hour* 3600 + minute * 60 + sec}`;
            }
        
            if (minute !== "00") {
              return `${minute * 60 + sec} `;
            }
        
            return `${sec}`;
        }
        

        【讨论】:

        • 问题是 sec 是一个字符串
        【解决方案6】:

        试试这个:

        const convert1000 = (time) => {
          const [hour, minute, sec] = time.split(':');
          return hour * 3600 + minute * 60 + sec * 1;
        };
        
        console.log(convert1000('00:30:00'));

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-25
          • 1970-01-01
          • 1970-01-01
          • 2013-07-02
          • 1970-01-01
          相关资源
          最近更新 更多