【问题标题】:Convert time to a float将时间转换为浮点数
【发布时间】:2018-12-23 06:45:21
【问题描述】:

我有一个秒表应用程序,可以将时间存储在一个数组中。 JS 从计时器开始计算毫秒数,然后将这些毫秒转换为秒和分钟,并将其作为字符串输出。

我要做的是计算这些时间的平均值,所以我必须将字符串转换为浮点数。它可以将像 10.35 这样的字符串转换为浮点数就好了,但它显然不适用于像 1:24.56 这样的东西,这就是我想要解决的问题。时间将采用以下格式之一:

[seconds].[milliseconds]
[minutes]:[seonds].[milliseconds]

有什么想法吗?我真的是 Javascript 新手,所以我不知道该去哪里。

编辑:回购是here。所有的废话都发生在 timer.js 和 main.js 文件中。

【问题讨论】:

  • 如何平均毫秒值并将结果转换为正确的格式?
  • 昨晚我有这个想法,但我不确定它是否可行。我现在要试一试。

标签: javascript timer stopwatch


【解决方案1】:

把它拆分,然后加起来:

function toMS(str) {
  if(!str.includes(":"))
     return parseFloat(str);
  const [mins, secms] = str.split(":");
  const [sec, ms] = secms.split(".");
  return ((+mins * 60) + +sec) * 1000 + +ms;
}

(这使用“一元加运算符”将字符串转换为数字)

【讨论】:

  • 由于我没有在此计时器中使用小时数,因此我更改了一些措辞,但我将 minsec 替换为未定义的错误。
  • @treedot 所以这是 mins:seconds.ms ?
  • 是的,就这个计时器而言,它可能永远不需要超过一个小时。
  • @treedo 你去吧
  • 谢谢。所以我通过这个函数从 timer.js 运行我的 formattedTime 输出并将其记录在控制台中,如下所示:console.log(toMS(formattedTime)) 并且我仍然认为 secms 是未定义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2013-11-11
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多