2

Jodaタイムライブラリを使用して日時の値を切り上げる方法を探しています。これを行う必要があるのは、間隔が次の丸められた時間まで60秒以内の場合のみです。

たとえば、切り上げます。

10/1/2012 10:59:00 => 10/1/2012 11:00:00
10/1/2012 10:59:01 => 10/1/2012 11:00:00
10/1/2012 10:59:59 => 10/1/2012 11:00:00
10/1/2012 10:49:59 => 10/1/2012 10:49:59 (no rounding needed)
4

3 に答える 3

2

base日時を時間に切り詰める必要があります。この操作の結果を と呼びましょうproduct。その後、製品に 1 時間追加します。その後、base(product - base) を使用して積を減算する必要がありますdifference

差が 61 秒未満の場合は製品をセットし、それ以外の場合はベースを離れます。

編集:

または、日付が59分であることを確認し、それに1分を追加して設定することもできます

if(dateTime.getMinuteOfHour() == 59) {
  dateTime.addMinutes(1);
  dateTime.setSecondOfMinute(0);
  dateTime.setMillisOfSecond(0);
}
于 2012-10-04T16:12:57.240 に答える
1

これはそれを行う必要があります:

DateTime round = new DateTime().withTime(23, 59, 0, 0)

DateTime temp = round.plusMinutes(1);
if(temp.getHourOfDay()!=round.getHourOfDay())
    round = new DateTime(temp.withTime(temp.getHourOfDay(),0,0,0));
于 2012-10-04T16:20:19.547 に答える
1

次のスニペットの行で何かを行うことができます。

DateTime input = new DateTime(2012, 10, 04, 21, 39, 0, 0);
DateTime dateTime = new DateTime();
long diffInSeconds =
    dateTime.minus(input.getMillis()).getMillis() / 1000;
if (diffInSeconds <= 60)
{
    input = input.plus(diffInSeconds * 1000);
}
于 2012-10-04T16:13:23.747 に答える