javascript - 使用 Javascript 的倒计时器

标签 javascript asp.net-mvc-4 timer

我正在进行在线考试,我只想在考试开始时启动计时器,并希望在考试结束时结束我的 Controller 上的结束时间,并且我正在查看结束时间,我想在系统时间和结束时间之间启动计时器

Controller

public ActionResult TestStarted(int TestId,DateTime End_Time)
        {
            ViewBag.ct = 0;
            ViewBag.TestId = TestId;

            EAssessmentNew.BAL.StudentBal studBal = new EAssessmentNew.BAL.StudentBal();
            EAssessmentNew.Dal.Student_Answer_Master _studAnsdal = new       EAssessmentNew.Dal.Student_Answer_Master();


            ViewBag.EndTime = End_Time;
        }

查看

<script type="text/javascript">





    var days, hours, minutes, seconds;


    var countdown = document.getElementById("lblCtime");


setInterval(function () {


    var current_date = new Date().getTime();
    var seconds_left = ( @ViewBag.EndTime - current_date) / 1000;


    days = parseInt(seconds_left / 86400);
    seconds_left = seconds_left % 86400;

    hours = parseInt(seconds_left / 3600);
    seconds_left = seconds_left % 3600;

    minutes = parseInt(seconds_left / 60);
    seconds = parseInt(seconds_left % 60);


    countdown.innerHTML = days + "d, " + hours + "h, "
    + minutes + "m, " + seconds + "s";  

}, 1000);
</script>

假设我有 EndTime 1:00 PM 和系统时间 12:00 PM,我如何在这两个时间之间启动计时器,因为我想将 EndTime 1:00 PM 转换为毫秒,因为脚本中的当前日期返回我的时间毫秒。

最佳答案

您需要做的是,每当用户单击“给予考试”时,将时间添加到您要给他的考试持续时间中(即考试开始时间下午 1 点,并且您给用户 1 小时的时间来完成考试,那么您需要传递时间为下午 1 点 + 1 小时以上的日期,以便从该日期时间开始计算以完成考试)并使用此函数将其作为结束日期传递

<script>
    var end = new Date('08/14/2014 12:00 PM');

        var _second = 1000;
        var _minute = _second * 60;
        var _hour = _minute * 60;
        var _day = _hour * 24;
        var timer;

        function showRemaining() {
            var now = new Date();
            var distance = end - now;
            if (distance < 0) {

                clearInterval(timer);
                document.getElementById('countdown').innerHTML = 'EXPIRED!';

                return;
            }
            var days = Math.floor(distance / _day);
            var hours = Math.floor((distance % _day) / _hour);
            var minutes = Math.floor((distance % _hour) / _minute);
            var seconds = Math.floor((distance % _minute) / _second);

            document.getElementById('countdown').innerHTML = days + 'days ';
            document.getElementById('countdown').innerHTML += hours + 'hrs ';
            document.getElementById('countdown').innerHTML += minutes + 'mins ';
            document.getElementById('countdown').innerHTML += seconds + 'secs';
        }

        timer = setInterval(showRemaining, 1000);
</script>

结束日期将根据服务器日期时间自动计算,您无需担心本地时间。

DEMO1

DEMO2

关于javascript - 使用 Javascript 的倒计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300923/

相关文章:

c# - 在 C# 中使用超时更改按钮的文本

javascript - Bootstrap Codeigniter 3 表单点击编辑

c# - 下拉列表的动态列表

asp.net-mvc-4 - 为什么_Layout.cshtml默认放置在~/Views/Shared文件夹中?

c# - 秒表可以用于生产代码吗?

java - 我在正确使用 Swing Timer 时遇到问题(能够多次调用它)?

javascript - 在没有框架的情况下 trim JavaScript 中字符串的换行符

javascript - 尝试将 Braintree 嵌套回调转换为 NodeJS 异步/等待语法

javascript - 将缩略图添加到 jssor 视频库

c# - 在到达 ModelBinder 之前推进 Request.InputStream