0

私はそのように生成された時間を持っています:

SimpleDateFormat dateFormatUCT = new SimpleDateFormat("yyyy-MM-dd HH:mm");
dateFormatUCT.setTimeZone(TimeZone.getTimeZone("UCT"));

String deadline = dateFormatUCT.format(new Date());

これを、deadline という文字列として取得しました。後でもう一度現在の日時を取得して、期限が過ぎているかどうかを比較したい。合格していない場合は、残り時間を計算したいと思います。データが文字列になっていることをすでに念頭に置いて、これを行うための組み込みの良い方法はありますか?

ティア

4

3 に答える 3

9

作成した同じ日付形式のparseメソッドを使用して、文字列表現を日付に戻すことができます。

Date deadlineDate = dateFormatUCT.parse(deadline);

別の日付 (たとえば ) が期限を過ぎているかどうかを比較するcurrentDateには、次のようにすれば十分です。

if(currentDate.after(deadlineDate)) {
    // deadline has passed, do something
}

そして、それらの間のミリ秒単位の時間差を取得するには、次のようにするだけで十分です。

long timeDiff = currentDate.getTime() - deadlineDate.getTime();

クラスのメソッドを使用TimeUnitして、このミリ秒の値を他の単位 (日、分、秒など) に変換できます。

TimeUnit.SECONDS.toSeconds(timeDiff);
于 2013-03-07T02:49:04.797 に答える
1

Date の 2 つのインスタンスを比較する最良の方法は、ミリ秒単位の値を使用することです。値を取得するには..

Date d = new Date();
long time1 = d.getTime();

..後で、上記と同じことを実行して、時間の差をミリ秒単位で取得できます。これを 1000 で割ると秒になり、再び 60 で割ると分になります。

ありがとう!

@レオ。

于 2013-03-07T02:53:02.950 に答える
0

Joda timeを見てみるといいと思います。これは、標準の Java Date API を拡張したものであり、Calendar API よりも軽量です。

また、 Joda Durationのようなデュレーション量専用のクラスもいくつかあります。

私はそれが役立つことを願っています..

于 2013-03-07T03:05:18.747 に答える