使用OpenLaszlo / javascript有效地计算MM:ss格式显示的秒数和秒数。

时间:2009-01-28 20:08:02

标签: javascript openlaszlo

我目前正在使用以下基于网络示例的功能,每隔一秒调用一次,以显示视频流的当前进度。

我能做些什么来提高效率吗?

function secondstominutes(secs){

var s;
if(secs > 60){
  var min = Math.floor(secs / 60);
  s = min < 10 ? "0" : "";
  s += min +":";
  secs = secs - min * 60;
} else {
  s = "00:";
}

if(secs < 10){
  s+= "0" + Math.floor(secs);
} else {
  s += Math.floor(secs);
}
return s;
}

3 个答案:

答案 0 :(得分:4)

function secondstominutes(secs)
{
   var mins = Math.floor(secs / 60);
   secs = secs % 60;

   return (mins < 10 ? "0" + mins : mins) 
          + ":"
          + (secs < 10 ? "0" + secs : secs);
}

答案 1 :(得分:1)

是的,它可以更简单,并使用更少的Math.floor,局部变量等。这里我的命题:

function secondstominutes(secs)
{
   return (Math.floor(secs/60))+":"+secs%60;
}

这将得到如下结果:

0:1,持续1秒 0:10,持续10秒 1:1,持续61秒

如果你想要空格等,可以这样做:

function formatZero(number)
{
   return (number>9) ? number : "0"+number;
}

function secondstominutes(secs)
{
   return formatZero((Math.floor(secs/60)))+":"+formatZero(secs%60);
}

这个是用于实用的单行函数ppls;)

function secondstominutes(secs)
{
   return ((arguments[1]=(Math.floor(secs/60)))<10?"0":"")+arguments[1]+":"+((arguments[2]=secs%60)<10?"0":"") + arguments[2];
}

答案 2 :(得分:1)

bobwienholt版本紧凑,快速且清晰,与我实现它的方式非常相似。为了好玩,我做了一些不同的解决方案的分析,我发现它更快一点,但它不是那么清楚,并且在一个声明中隐藏了一个任务:

function secondstominutes(secs)
{
    var m = (secs / 60) | 0;

   return (m < 10 ? "0" + m : m) 
          + ":"
          + ( ( secs %= 60 ) < 10 ? "0" + secs : secs);
}

说明:

var m = (secs / 60) | 0;

将sec除以60并将二进制“或”除以结果为0.二进制“OR”将值转换为整数,并且通过或0,返回结果的整数部分而不进行修改。这比调用 Math.floor()更快,但不太清楚。由于它被转换为整数,你将任何电影的长度限制为2147483647分钟≈35791394小时≈1491308天≈4085年。

( secs %= 60 )

这是做(secs = secs%60)的简短形式。它将 secs 的值除以60并指定 secs 提醒(例如61%60 = 1)。通过分析我发现将计算放在return语句中而不是在它自己的行上更快一点。

(m < 10 ? "0" + m : m)

这计算第一个语句 m&lt; 10 如果是,则第二个语句执行“0”+ m 否则第三个: m 。在英语中:如果 m 小于10,则在开头添加零,否则返回该值。