7

Javaで簡単な日付計算をしたいと思います。たとえば、日付間の日数の差を計算します (時間コンポーネントが 0 の場合)。もちろん、ミリ秒の単純な減算を 1 日あたりのミリ秒数で割ることもできます。これは、夏時間がシーンに入るまでは問題なく機能します。特に、時間要素を考慮に入れるかどうかにかかわらず、「日数の差」についてはさまざまな解釈が可能であることを私は認識しています。簡単にするために、時間コンポーネントが 0 であると仮定します。

この種の計算は非常に一般的なニーズのようであり、この質問に対するさまざまなアプローチについて議論することをお勧めします.

4

5 に答える 5

11

Jodaの日付/時刻ライブラリ、特にReadableIntervalクラスを見てみましょう。

Jodaは、Javaで日付/時刻を操作するときに、作業を大幅に楽にします。これが、新しいJava JSR310wrtの基盤であると思います。日付/時刻。つまり、それ(または非常に類似したもの)は、Javaの将来のバージョンに存在する予定です。

于 2009-03-13T16:08:18.980 に答える
3

Date、Calendar、および DateUtils は、探しているすべての機能を備えているようです。 http://commons.apache.org/lang/api/org/apache/commons/lang/time/DateUtils.html

DateUtils を使用すると、時間を切り捨てたり丸めたりできるため、日付のみを処理できます。サマータイムについても触れました。主な問題は、DST が変更された日の 01:30 に誰かが何かをしたと言うときです...それはどの 01:30 でしたか? 最初のものですか、それとも2番目のものですか?幸いなことに、これはタイムゾーンと DST オフセットを格納する Calendar クラスで処理できます。詳細については、こちらをご覧ください: http://www.xmission.com/~goodhill/dates/deltaDates.html

于 2009-03-14T18:37:52.210 に答える
2

より簡単なオプションは、Joda で Days、Weeks、Months、および Years クラスを使用することです。

そうすれば、次のような簡単なことを行うことができます。

int daysDifference = Days.daysBetween(startInstant, endInstant).getDays();
于 2011-04-19T05:39:01.240 に答える
1

これは、経過時間を計算するためのJavaの日付/カレンダー機能の使用について説明している記事です。

于 2009-03-13T16:11:16.087 に答える