2010-05-20 5 views
3

J'utilise asp.net 3.5 avec C#. Je veux créer un compte à rebours et mon exigence est comme ceci:Compte à rebours dans asp.net

date de fin du compte à rebours 16 Juin 2010 Ainsi, jusqu'au 16 Juin vient mon minuteur affiche le temps de remeaning. S'il vous plaît laissez-moi savoir comment y parvenir, je google mais je n'ai pas eu la solution d'excat à mon problème.

Merci d'avance.

+0

Aussi, je veux montrer la minuterie diminuer de chaque seconde. s'il vous plaît aider – Zerotoinfinity

Répondre

5

Ceci est quelque chose que vous devez résoudre avec Javascript. La seule chose que vous devez faire à partir du serveur est de définir la date de fin comme une variable Javascript. Vous avez besoin de Javascript car vous ne chargez que la page depuis le serveur. Ensuite, vous devez gérer le compte à rebours sur le client.

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); 
    } 

Script pris une modification par exemple fin de My Little Scripts.

+0

Parfait! Merci :) – Zerotoinfinity

0

Si vous aimez ça facile, utilisez DateTime.

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

Salut Marks, Merci pour la réponse. Comment puis-je faire diminuer le temps par seconde comme l'horloge numérique? – Zerotoinfinity

+0

Si vous voulez compter à rebours, vous ne pouvez pas utiliser javascript pour cela. Regardez la réponse de Joop. Ma solution est seulement pour une mise à jour par reconquête. – Marks