【问题标题】:displaying time duration in javascript [duplicate]在javascript中显示持续时间[重复]
【发布时间】:2021-03-20 08:05:44
【问题描述】:

我无法理解下面提到的函数是如何工作的。

const getTime = (time) =>{
        return(
            Math.floor(time/60) + ":" + ("0" + Math.floor(time%60)).slice(-2)
        );
    };

主要是("0" + Math.floor(time%60)).slice(-2) 部分。有人可以用简单的方式解释一下吗?

【问题讨论】:

  • 如果秒部分小于10,则添加0。您可以将各个部分分配给变量并进行验证。 var seconds = Math.floor(time%60)zeroPrefix = "0" + seconds 最后是 zeroPrefix.slice(-2)
  • 这个来自副本的答案有一个解释:stackoverflow.com/a/12278510/3082296

标签: javascript reactjs time


【解决方案1】:

据我了解,括号中的时间告诉您输入时间。例如;

const d = new Date();
const t = d.getMinutes();
console.log(t);

你问的主要部分是将你输入的第 60 次的余数加到 0。当我们以这种方式编写相同的代码时,如果我的分钟是 33,我们将看到 34 输出;

const d = new Date();
const t = d.getMinutes();
const getTime = "0" + Math.floor(t%60);
getTime.slice(-2);
console.log(t);

**编辑:另一种选择**
您正在查看“余数运算符”和“切片方法”。

每当代码令人困惑时,将其分解为命名的部分并打印它们会有所帮助。这个 sn-p 就是这样做的:

// Tests
formattedMinsAndSecs(5);
formattedMinsAndSecs(3611);
formattedMinsAndSecs(999999);


// Reworked function
function formattedMinsAndSecs(seconds){

  console.log("input:", seconds);

  const minsPart = Math.floor(seconds / 60);
  console.log("minsPart:", minsPart);

  // Remainder operator (%) gets remainder after division
  const secsPart = Math.floor(seconds % 60); 
  console.log("secsPart:", secsPart);

  const withLeadingZero = "0" + secsPart;
  console.log("withLeadingZero:", withLeadingZero);

  // slice method with 1 negative argument gets last N chars
  const lastTwoCharacters = withLeadingZero.slice(-2);
  console.log("lastTwoCharacters:", lastTwoCharacters);

  const formatted = minsPart + ":" + lastTwoCharacters
  console.log("formatted:", formatted, "\n\n");

  return formatted;
};

【讨论】:

  • @AjeetShah,感谢您提供意见。我清理了一下并更新了编辑文本。链接不断断开,我无法弄清楚为什么,所以我暂时删除了它们。 (我想过做一个单独的问题,但我担心如果人们不喜欢原来的问题足以关闭它,那么新的问题也不会好过。)
猜你喜欢
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
相关资源
最近更新 更多