1

2つのカレンダーを同じ日付に設定していますが、2つのカレンダーの時刻が異なるため、Cal1.CompareTo(Cal2)の結果は望ましいゼロではありません。カレンダーエントリの時間を短縮する方法はありますか?1つの解決策は、カレンダーエントリをタイプ「日付」に変換することです。ただし、Dateはほとんど非推奨です(または少なくともCalendarの日、月、年のパラメーターを使用するコンストラクター)他のアイデアはありますか?timeInMulisecondsでいくつかのモジュロ計算を行うと、見苦しく聞こえます。

TIA

4

3 に答える 3

4

両方のオブジェクトで、MILLISECOND(または比較したくないフィールド)をゼロに設定できます。

例:

cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.HOUR , 0);
cal.set(Calendar.MINUTE , 0);
cal.set(Calendar.SECOND , 0);

これがCalendarのjavadocです。

于 2012-10-23T17:47:45.317 に答える
2

個人的には、代わりにJodaTimeを使用することを強くお勧めします。その時点で、代わりに使用できます。これは、関心のある情報を正確に表します。JodaTimeには、はるかに豊富なタイプのセットがあります。これは通常、組み込みクラスやクラスよりもはるかに優れた日付/時刻APIです。LocalDateCalendarDate

タイムゾーンも考慮する必要があることに注意してください。同じ時刻が2人の異なる人の異なる日付になる可能性があります...(を作成するときにこれを考慮する必要がありますLocalDate)。

これはすべて、2つの値が同じカレンダーシステムにあることを前提としていますが、それはかなり可能性が高いです。

于 2012-10-23T17:49:10.080 に答える
0

次のコマンドでカレンダーを印刷します。

Log.d("Test","Time1: "+cal1.getTimeInMillis());
Log.d("Test","Time2: "+cal2.getTimeInMillis());

同じ時間が得られず、両方を同じにしたい場合は、次のようにします。

cal2 = cal1.clone;
于 2012-10-23T18:38:25.207 に答える