2017-03-16 10 views
0

このサイトでこのコードを見つけましたが、変更したい点が1つありますが、わかりにくいので、助けが必要です。私がしたいことは、その年の年を削除して、カウントダウンがその年に対応するようにすることです。コードの年月なしのJavaScriptカウントダウン

<script> 
var end = new Date('04/19/2017 10:1 AM'); 

    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> 
<div id="countdown"></div> 

クレジットがthis guy

答えて

2

に出かけるあなたがしなければならないのは、パラメータを指定せずに新しいDateインスタンスを作成することです。これにより、現在の日時を持つDateオブジェクトが得られます。しかし、あなたの情報がブラウザ(クライアントのマシン)から来るため、これは非常に危険です。これはサーバー上で生成する必要があります。

何であれ、あなたはJavascriptでそのインスタンスを作成する方法がわからない場合は、ここであなたが行く:

var currentDatetime = new Date(); 
var currentYear = currentDatetime.getFullYear(); 

そして、あなたはこのような何かを行うことができます。

var end = new Date('04/19/' + currentYear + ' 10:1 AM'); 

あなたが探索することができますDateクラスがここで行うことができるもの:https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Date

0

文字列をDateコンストラクタで解析するべきではありません。小さな関数またはライブラリのいずれかで手動で解析する必要があります。

ので、今年はにsetFullYearを使用して設定することができますが、日付オブジェクトを持っていると仮定すると:

// Create a date for 25 March, 2006 
 
var d = new Date(2006, 2, 25); 
 
console.log(d.toString()); 
 

 
// Set to current year 
 
d.setFullYear(new Date().getFullYear()); 
 

 
console.log(d.toString());

日が新しい年に存在しない場合、例えば開始日が2016年2月29日だった場合は、2017年3月1日翌日にロールオーバーします。

日付部分がわかっている場合は、逆の方法で日付と月と日付を設定し、例えば

// Create a date for 30 June in the current year 
 
var d = new Date(); 
 
d.setMonth(5,30); 
 

 
// Zero the time component 
 
d.setHours(0,0,0,0); 
 

 
console.log(d.toString());