首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JS秒表中格式化毫秒

问在JS秒表中格式化毫秒
EN

Stack Overflow用户
提问于 2015-11-03 06:05:46
回答 3查看 2.2K关注 0票数 1

我基本上有一个完成的秒表,除了毫秒外,它还能工作。我只想显示2位数的毫秒,但我有一个问题。这是我用来格式化时间输出的函数:

代码语言:javascript
复制
function timeFormatter(timeInMilliseconds) {
  var time = new Date(timeInMilliseconds);
  var minutes = time.getMinutes().toString();
  var seconds = time.getSeconds().toString();
  var milliseconds = time.getMilliseconds().toString().slice(0, 2);

  if (minutes.length < 2) { minutes = '0' + minutes; }
  if (seconds.length < 2) { seconds = '0' + seconds; }
  if (milliseconds.length < 2) { milliseconds = '0' + milliseconds; }

  return minutes + ' : ' + seconds + ' . ' + milliseconds;
}

问题

例如,当我给这个函数一个3093的输入时,输出是00 : 03 . 93

当我给函数一个3105的输入(应该比前面的输入更大)时,输出是00 : 03 . 10。换句话说,我的秒表可以追溯几毫秒。

我不知道如何解决这个问题,任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-03 06:11:58

你想要的是Number.prototype.toFixed

代码语言:javascript
复制
var hundredths = (time.getMilliseconds()/10).toFixed(2);

你不是真的在寻找毫秒(千分之一秒,可以是三位数,0-999),你要的是百分之一秒。所以你取毫秒除以10,然后再循环。这会给你百分之一秒的数值。如果需要前导零,可以添加它:

代码语言:javascript
复制
var hundredths= (time.getMilliseconds()/10).toFixed(0);
if(hundredths.length < 2) hundredths= "0" + hundredths;

注意,Number.prototype.toFixed返回一个字符串,而不是数字。

票数 3
EN

Stack Overflow用户

发布于 2015-11-03 06:30:25

您可以使用一个简单的pad函数,例如:

​

代码语言:javascript
复制
/* Pad num with leading zeros to minimum length
** If number length is equal to or greater than minimum length,
** return it unmodified.
**
** @param {number} num    - number to pad
** @param {number} length - minimum length of padded number
*/
function pad(num, length) {
  if ((''+num).length >= length) return num;
  var lead = '0' + new Array(length).join('0')
  return (lead + num).slice(-length);
}

document.write(pad(23,5)); // 00023
document.write('<br>' + pad(223,2)); // 223

​

然后删除所有if语句并使用:

代码语言:javascript
复制
 return pad(minutes,2) + ' : ' + pad(seconds,2) + ' . ' + pad(milliseconds,3);
票数 0
EN

Stack Overflow用户

发布于 2015-11-03 06:18:11

只需尝试以下代码来启动、停止和重置计时器

代码语言:javascript
复制
var elem = document.getElementById("my-stopwatch");
var timer = new Stopwatch(elem, {delay: 10});

// start the timer
timer.start();

// stop the timer
timer.stop();

// reset the timer
timer.reset();
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33492421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档