0

将来の指定された日付と現在の日付の間のカウントダウン タイマーを、日:時:分という形式で表示する必要があります。たとえば、終了日は 2013 年 12 月 4 日の午後 1 時 30 分で、現在は 2013 年 12 月 3 日の午後 12 時 30 分です。

アプリケーションのサイズが約 4.1 MB 増加するため、joda-time ライブラリを使用したくありません。アプリケーションで日付/時刻機能を使用する必要があるのは 1 回だけですJava が提供するカレンダー API を使用していますが、この「タイマー」/「カウントダウン タイマー」機能を実装できません。

これをどのように実装する必要がありますか?

編集:私のアプリケーションは 1 つのタイム ゾーンでのみ使用されます。ESTなので、タイムゾーン修正の心配はありません

編集:これまでに試したことは、2 カレンダーの月を取得する

cal1.get(Calendar.MONTH); //to get the month
cal2.get(Calendar.MONTH);

cal1.get(Calendar.DAY_OF_MONTH);  //to get the day
cal2.get(Calendar.DAY_OF_MONTH);

cal1.get(Calendar.HOUR_OF_DAY);  //to get the hour in 24 hours
cal2.get(Calendar.HOUR_OF_DAY);

cal1.get(Calendar.MINUTE); //to get the minutes
cal2.get(Calendar.MINUTE);

cal1.get(Calendar.SECOND);  //to get seconds
cal2.get(Calendar.SECOND);

ここで月を引きます。0 の場合、差が 1 か月未満であることがわかります。同様に、日、時間、分を引きます。しかし、それは私に正確な結果を与えません。例 - 今日は 2013 年 7 月 6 日午前 4 時、終了日は 2013 年 7 月 7 日午前 3 時、私のアルゴリズムによれば、残り時間は1 日と -1 時間であり、タイマーを実行してこのタスクを毎秒実行します。

私はより良いアルゴリズムとそれを表示するためのより良い方法が必要です.UIスレッドで同じタスクを何度も繰り返しているため、ラグが発生する可能性があります.

4

1 に答える 1

2

java.util.Date比較するオブジェクトが 2 つあると思います。まず、N 秒ごとに実行されるある種のタイマーが必要です。Handler.postDelayed()そのためにはうまく機能します。実行するたびに、timeMs = futureDate.getTime() - System.currentTimeMillis(). これにより、ミリ秒単位の時間差が得られます。次に、これを目的の形式に変換するだけですseconds = timeMs / 1000 % 60

于 2013-10-29T17:14:30.053 に答える