如何将时间戳补间到特定时间

How to tween a timestamp to a specific time

我在屏幕上有一个带有时间的假时钟:

<div class="time">9:14<sup>am</sup></div>

我想制作一个函数来将那个时间补间到另一个任意时间, 这样时钟实际上会经过秒和小时,直到到达新时间(伪代码):

var currentTime = {
  time: 9:14am
}
function changeTime(newTime){
  TweenMax.to(currentTime,.5,{
    time: newTime
  });
}

changeTime(12:32pm);

所以在上面的例子中,分钟数会增加一直到达到 60,然后小时数增加一并重置为零,然后再次增加到 60,依此类推,直到达到 12:32 (上午在 12:00pm 切换到下午)。

有没有办法用 tweenmax 和时间戳来做到这一点?或者我需要构造一个自定义函数吗?或者有没有更好的补间方式?

你可以使用这样的东西(并改进它,我很快就做到了)。

<script>
        var hour, minute, second, meridian, isAm;
        isAm = true;
        hour = 0;
        minute = 0;
        second = 0;

        function timerLoop () {
            second++;

            if(second > 59) {
                second = 0;
                minute++;
            }

            if(minute > 59) {
                minute = 0;
                hour++;
            }

            if(hour >12) {
                hour = 1;
                isAm = !isAm;
            }

            // update labels
            meridian = 'a.m.';
            if(!isAm) meridian = 'p.m.';
            console.log(hour + ':' + minute + ':' + second + ' ' + meridian);

            setTimeout(function() {
                timerLoop();
            }, 1000);
        }


        timerLoop();
    </script>

我只测试了 2 分钟,但那部分工作正常。 您可能希望在个位数前添加前导零,因为我还没有这样做。一旦达到你想要的 运行,你就可以考虑添加动画或淡入淡出以使其样式更好一些。