3

Instant.truncatedTo を使用して日付を切り捨てようとしましたが、1 日以上の切り捨ては許可されていないようです。私がやりたいことは、特定の時間間隔を使用して日付を切り捨てることです。例えば:

For 1hour interval, 2014-10-18T11:30:52.560Z should become: 2014-10-18T11:00:00.000Z 
For 1day interval, 2014-10-18T11:30:52.560Z should become: 2014-10-18T00:00:00.000Z 
For 1month interval, 2014-10-18T11:30:52.560Z should become: 2014-10-01T00:00:00.000Z 
For 6month interval, 2014-10-18T11:30:52.560Z should become: 2014-07-01T00:00:00.000Z

したがって、日付を特定の時間間隔にまたがるようなものです。

私は実際にはタイムスタンプ値を使用してタイムスタンプ間隔 ((dateTimestamp/intervalTimestamp)*intervalTimestamp) で割っていましたが、月を使用する場合、月日が変わる可能性があるため固定のタイムスタンプ値はありません。

4

1 に答える 1

1

独自の関数を作成できます。

public LocalDateTime truncateTo(LocalDateTime dt, Time interval) {
    switch(interval) {
    case MONTH_6:
        if(dt.getMonthValue() > 6)
            dt = dt.withMonth(7);
        else
            dt = dt.withMonth(1);
    case MONTH:
        dt = dt.withDayOfMonth(1);
    case DAY:
        dt = dt.withHour(0);
    case HOUR: 
        dt = dt.withMinute(0);
        dt = dt.withSecond(0);
        dt = dt.withNano(0);
    break;
    }
    return dt;
}
于 2014-10-21T13:35:01.363 に答える