あなたはfloor-manipulationを適用するには、フィールドhourOfDay
のプロパティを使用することができます。
List<DateTime> dtListOld = dt; // your input
List<DateTime> dtListNew = new ArrayList<>();
for (DateTime dateTime : dtListOld) {
dtListNew.add(dateTime.hourOfDay().roundFloorCopy());
}
これらのリストは、上記のあなたのコメントによるとDateTime
-objectsを保持します。書式設定のような処理を行う場合は、DateTimeFormatter
を使用できます。 DateTime
の他の丸められていないインスタンスとの比較のために、isEqual()
のような通常の比較方法を使用することができます。
date-time-objectsのソースが時計(通常はミリ秒分数を生成する)である場合、厳密な日付 - 時刻(瞬時)のテストが鋭い時間に行われることがエラーになることに注意してください。この場合、比較対象の他のオブジェクトに同様の丸めモードを適用できます(ただし、分単位または2番目の単位)。
比較例:
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMddHHmmss");
DateTime now = DateTime.now();
DateTime other1 = dtf.parseDateTime("20160418184137");
DateTime other2 = dtf.parseDateTime("20160418180000");
DateTime sharpHour = now.hourOfDay().roundFloorCopy();
if (!sharpHour.isEqual(other1.minuteOfDay().roundFloorCopy())) {
System.out.println("Not matching sharp hour: " + other1);
}
DateTime other2Floor = other2.minuteOfDay().roundFloorCopy();
if (sharpHour.isEqual(other2Floor)) {
System.out.println("Matching sharp hour: " + other2);
}
出力:
鋭い時間一致しない:鋭い時間マッチング00
:2016-04-18T18:41:37.000 + 02: 2016-04-18T18:00:00.000 + 02:00
丸みを付けた丸めを使用すると、精度が必要以上に高いパーツを忘れないようにすることができます。たとえば、getMinuteOfHour() == 0
のようなクエリ/条件では、可能な秒数またはミリ秒数がゼロからずれていることを考慮しません。
コードはコンパイルされません。あなたのリストには何を入れたいですか?文字列または 'DateTime'?それ以外の場合は、プロパティ操作を使用するとおそらく役に立ちます:[hourOfDay.roundFloorCopy()](http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.Property.html#roundFloorCopy--) –
@MenoHochschildコードはほんの一例で、リスト内に 'DateTime'を入れて別のリストと比較し、鋭い時間にのみ返すようにしたい –
指定された形式は本当ですか? 'yyyMMddHHmmss'のように見える –