私はいくつかのレガシーコードで作業しており、いくつかの値を繰り返し処理しています。レガシーコードは、sql.timestamp 値を使用して新しい日の始まりをチェックしています:
public static final long MILLIS_PER_SECOND = 1000;
public static final long MILLIS_PER_MINUTE = 60 * MILLIS_PER_SECOND;
public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE;
public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;
if (entry.getPeriodEnd().getTime() % TimestampUtils.MILLIS_PER_DAY == 0 || i >= throughputEntries.size()) {
...
}
結果はnever0
なので、if
whenにのみ入りますi >= throughputEntries.size()
彼がどのように結果を得ていたのか、私には理解できません0
。おそらく彼のデータは異なっていて、常に特定の期間で終了し、0
日付を確認するためにコードを書き直すこともできますが、彼が自分のコードでそれをどのように達成したか知りたいです。
私が提供したコードでこれを解決できるかどうかはわかりませんが、何か不足している可能性があります...
編集
@t0r0Xと@Leoのおかげで、最終的にこれについて頭を悩ませました
次のようにJoda-Timeを使用するようにコードを変更しました。
LocalDate newDay = null;
int count = 0;
public void calcAvg(){
DateTimeZone zone = DateTimeZone.getDefault();
LocalDate throughtputDate = entry.getPeriodEnd().toDateTime(zone).toLocalDate();
if ( this.newDay(throughtputDate) || i >= throughputEntries.size()) {
...
}
}
public boolean newDay(LocalDate date){
boolean go = false;
if(count !=0){
if(date.isAfter(newDay)){
newDay = date;
go = true;
}
}
else{
newDay = date;
count++;
}
return go;
}
おそらく、私が書いた方法よりも新しい日付を確認するためのよりクリーンな方法ですが、時間は誰も待っていません。