2016-09-15 6 views
0

私は、角型の現在の時間 - 将来の既存の時間でカウントダウンする機能を実装しています。時間が経過するとメッセージを表示します。タイマーが尽きた..... HH:MM:SS

  • 終了時刻。それをendTimeと呼ぶことができます。例: 9/15/2016 9:16:00 PM
  • 現在の時刻です。私たちが生きる時間。 currentTimeとしましょう。

目的は、現在の時間終了時間であるタイマーを取得することです。これを変数TotalHoursに保存します。

次に、合計時間に対するNOWの残り時間を計算します。たとえば、TotalHours = 5です。そして、今は9/14/2016 1:16:00 PM、その後FinalCountDown = 6:16:00 PMです。それは

if (info.endTime) { 

    var CurrentTime = new Date().toLocaleString('en-US'); 
    moment.locale(); // en 

    var TotalHours = moment.utc(moment(info.diffTime, "DD/MM/YYYY HH:mm:ss").diff(moment(CurrentTime, "DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss"); 

    info.finalCountDown= TotalHours; 

}; 

...ここ...

私が実行したいタイマー私はそれをやっているどのようにされているここでの問題は、次のとおりです。

ケース1:

endTime = 9/15/2016 9:16:00 AM 
currentTime = 9/15/2016 1:21:00 PM 

TotalHours = 4:05:00 

...次の2日後...

ケース2:

H:05メートル:00sの

私も、私はそれのように表示したい

52:05:00 = 48 + 4時05分00秒=それは+余分な時間を24時間+ 24時間を追加する必要があり

endTime = 9/17/2016 9:16:00 AM 
currentTime = 9/15/2016 1:21:00 PM 

TotalHours = 4:05:00 

Total hours is still the same... 

迅速かつ汚いソリューションは、単にミリ秒に2つの日付/時刻オブジェクト間の違いを変換し、ミリ秒単位でいくつかの計算を行うと、フォーマットするだろう

答えて

1

...私はこの問題を解決する方法を教えてください

var currentTime = new Date("9-15-2016 13:21:00"); 
var endTime = new Date("9-17-2016 09:16:00"); 

var ms = (endTime - currentTime); // ms of difference 
var days = Math.round(ms/ 86400000); 
var hrs = Math.round((ms% 86400000)/3600000); 
var mins = Math.round(((ms% 86400000) % 3600000)/60000); 

$scope.finalCountdown = (days + "d:" + hrs + " h:" + mins + "m left"); 

必要に応じて秒単位で計算を追加することができます。数字の書式設定を先行ゼロにすることができます。

ただし、これにより、うるう年やその他のデータや時間の異常などの問題は説明されません。より良い提案はangular-momentを使用することです。これはMoment.jsを使用して違いやフォーマットを容易に処理できるためです。

+0

私はMomentjsを使ってみました。それは動作しません..私は手順を実行することはできません。 – asax

+0

@asax - このチュートリアルをscotch.ioで見て、それが役立つかどうかを確認してください。https://scotch.io/tutorials/display-time-relatively-in-angular – Hooligancat

関連する問題