我正在做一个测验,我需要计算做这个测验的总时间。我需要显示在 HH::MM::SS 中花费的时间..任何指针?
问问题
7419 次
4 回答
4
new Date().time 以毫秒为单位返回时间。
var nStart:Number = new Date().time;
// Some time passes
var nMillisElapsed:Number = new Date().time - nStart;
var strTime:String = Math.floor(nMillisElapsed / (1000 * 60 * 60)) + "::" +
(Math.floor(nMillisElapsed / (1000 * 60)) % 60) + "::" +
(Math.floor(nMillisElapsed / (1000)) % 60);
于 2008-09-18T16:54:53.857 回答
4
我复活这个问题说Brian和mica都错了。创建一个新的 Date() 根据计算机的时钟为您提供时间。所有人所要做的就是将时钟拨回几分钟,这将导致测验计时器也拨回几分钟。或者更糟的是,他们可以将时钟调回开始测验之前的时间,而您的应用程序会认为他们在参加测验上花费的时间是负数。oO
解决方案是使用 flash.utils.getTimer()。它返回自 swf 开始播放以来的毫秒数,无论计算机时钟显示什么。
这是一个例子:
var startTime:Number = getTimer();
// then after some time passes:
var elapsedMilliseconds:Number = getTimer() - startTime;
然后你可以使用 Brian 的代码来格式化显示时间:
var strTime:String = Math.floor(elapsedMilliseconds / (1000 * 60 * 60)) + "::" +
(Math.floor(elapsedMilliseconds / (1000 * 60)) % 60) + "::" +
(Math.floor(elapsedMilliseconds / (1000)) % 60);
于 2013-04-09T08:10:50.867 回答
1
当数字小于 10 时填充零(感谢 brian)
var now:Date; //
var startDate:Date;
var startTime:Number;
// initialize timer and start it
function initTimer():void{
startDate = new Date();
startTime = startDate.getTime();
//
var timer:Timer = new Timer(1000,0); // set a new break
timer.addEventListener(TimerEvent.TIMER, onTimer); // add timer listener
//
function onTimer():void{
now=new Date();
var nowTime:Number = now.getTime();
var diff:Number = nowTime-startTime;
var strTime:String = Math.floor(diff / (1000 * 60 * 60)) + ":" +
zeroFill(Math.floor(diff / (1000 * 60)) % 60) + ":" +
zeroFill(Math.floor(diff / (1000)) % 60);
// display where you want
trace('time elapsed : ' + strTime);
}
// fill with zero when number is less than 10
function zeroFill(myNumber:Number):String{
var zeroFilledNumber:String=myNumber.toString();
if(myNumber<10){
zeroFilledNumber = '0'+zeroFilledNumber;
}
return zeroFilledNumber;
}
// start TIMER
timer.start();
}
initTimer();
于 2010-12-16T09:01:28.693 回答
0
var countdown:Timer = new Timer(1000);
countdown.addEventListener(TimerEvent.TIMER, timerHandler);
countdown.start();
function timerHandler(e:TimerEvent):void
{
var minute = Math.floor(countdown.currentCount / 60);
if(minute < 10)
minute = '0'+minute;
var second = countdown.currentCount % 60;
if(second < 10)
second = '0'+second;
var timeElapsed = minute +':'+second;
trace(timeElapsed);
}
于 2013-11-17T17:22:56.657 回答