結果が 25 日 16 時間 18 分 43 秒のように見えるように、2013 年 1 月 1 日と現在の差を計算する最良の方法は何ですか?
3432 次
2 に答える
2
String dateStop = "01.01.2013";
long now = System.currentTimeMillis():
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date d1 = null;
Date d2 = null;
try {
d1 = new Date (now);
d2 = format.parse(dateStop);
} catch (ParseException e) {
e.printStackTrace();
}
long difference = d2.getTime() - d1.getTime();
long differenceBack = difference;
differenceBack = difference / 1000;
int secs = differenceBack % 60;
differenceBack /= 60;
int mins = differenceBack % 60;
differenceBack /= 60;
int hours = differenceBack % 24;
差はミリ秒単位です。次に、日/時間/分/秒を計算するためにいくつかの数学を単純に使用できます
于 2012-12-05T11:15:05.297 に答える
0
あなたはコードを提供していないので、私はあなたのためにそれを行うつもりはありませんが、その時間は、さまざまな理由で興味深いトピックになる可能性があります (最初のタイムゾーン)。
この素晴らしいライブラリをお勧めしますhttp://joda-time.sourceforge.net/
Joda-Time は、Java の日付と時刻のクラスの高品質な代替品を提供します。この設計では、シンプルな API を提供しながら、複数のカレンダー システムを使用できます。「デフォルト」のカレンダーは、XML で使用される ISO8601 標準です。グレゴリオ暦、ユリウス暦、仏教、コプト、エチオピア、イスラムのシステムも含まれており、さらなる追加を歓迎します。サポート クラスには、タイム ゾーン、期間、形式、および解析が含まれます。
ピリオドとそれに沿ったものを使用することを検討してください
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0);
// period of 1 year and 7 days
Period period = new Period(start, end);
カウントダウン時計を作成するために似たようなものを使用しましたが、質問で、値を返す形式 (日、秒、分) を指定できませんでした。ただし、期間はこの面では非常に柔軟です。例えば:
// able to calculate whole days between two dates easily
Days days = Days.daysBetween(start, end);
// able to calculate whole months between two dates easily
Months months = Months.monthsBetween(start, end);
于 2012-12-05T11:16:22.743 に答える