代码之家  ›  专栏  ›  技术社区  ›  Zerotoinfinity HLGEM

ASP.NET中的倒计时计时器

  •  3
  • Zerotoinfinity HLGEM  · 技术社区  · 14 年前

    我正在使用带有C_的ASP.NET 3.5。 我想创建一个倒计时计时器,我的要求如下:

    倒计时结束日期:2010年6月16日 所以,到6月16日,我的计时器将显示重读时间。

    请告诉我如何实现它,我谷歌它,但我没有得到我的问题的独家解决方案。

    事先谢谢。

    2 回复  |  直到 11 年前
        1
  •  5
  •   Joop    14 年前

    这是您需要用JavaScript解决的问题。在服务器上只需要将结束日期设置为一个javascript变量。您需要JavaScript,因为您只从服务器加载页面。然后你需要处理客户的倒计时。

    JavaScript

    <script type="text/javascript">
        function countdown_clock(clockID, year, month, day, hour, minute) {
            countdown(clockID, year, month, day, hour, minute);
        }
    
        function countdown(clockID, year, month, day, hour, minute) {
            Today = new Date();
            Todays_Year = Today.getFullYear();
            Todays_Month = Today.getMonth();
    
            //Convert both today's date and the target date into miliseconds.                           
            Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(),
                                 Today.getHours(), Today.getMinutes(), Today.getSeconds())).getTime();
            Target_Date = (new Date(year, month - 1, day, hour, minute, 00)).getTime();
    
            //Find their difference, and convert that into seconds.                  
            Time_Left = Math.round((Target_Date - Todays_Date) / 1000);
    
            if (Time_Left < 0)
                Time_Left = 0;
    
            days = Math.floor(Time_Left / (60 * 60 * 24));
            Time_Left %= (60 * 60 * 24);
            hours = Math.floor(Time_Left / (60 * 60));
            Time_Left %= (60 * 60);
            minutes = Math.floor(Time_Left / 60);
            Time_Left %= 60;
            seconds = Time_Left;
    
            dps = 's'; hps = 's'; mps = 's'; sps = 's';
            //ps is short for plural suffix.
            if (days == 1) dps = '';
            if (hours == 1) hps = '';
            if (minutes == 1) mps = '';
            if (seconds == 1) sps = '';
    
            var clock = document.getElementById(clockID);
            clock.innerHTML = days + ' day' + dps + ' ';
            clock.innerHTML += hours + ' hour' + hps + ' ';
            clock.innerHTML += minutes + ' minute' + mps + ' and ';
            clock.innerHTML += seconds + ' second' + sps;
    
            //Recursive call, keeps the clock ticking.
            setTimeout('countdown("' + clockID + '",' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ');', 1000);
        }
    </script>
    

    ASP.NET

    protected override void OnPreRender(EventArgs e)
        {
            DateTime endDate = new DateTime(2010, 6, 1, 0, 0, 0);
            string script = string.Format("countdown_clock('clock', {0}, {1}, {2}, {3}, {4});", endDate.Year, endDate.Month, endDate.Day, endDate.Hour, endDate.Minute);
            ScriptManager.RegisterStartupScript(this, this.GetType(), "countdown", script, true);
    
            base.OnPreRender(e);
        }
    

    脚本从 My Little Scripts .

        2
  •  0
  •   Marks    14 年前

    如果您喜欢简单,可以使用日期时间。

    DateTime EventTime = new DateTime(2010, 6, 16);
    TimeSpan Duration = EventTime - DateTime.Now;
    string TimeTillEvent = Duration.ToString();