最近、25時とか入れたら、日付を+1日して、時刻を1時にしたいみたいなことがあって、それをどうしたらいいか色々試してみました。
ある1日を8時始まりとしたいことがあるときに使うと思います。
↓みたいな感じになりました。
package pleasure.commn.lib.test;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.time.format.ResolverStyle;
import java.time.temporal.TemporalAccessor;
import org.junit.Test;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class CalcTargetDateTimeTest {
@Test
public void test(){
// 2017-07-02 00:01:02を作りたい
// 指定日付
String date = "2017-07-01";
// 指定時刻
String time = "24:01:02";
// 時刻のフォーマット指定
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss").withResolverStyle(ResolverStyle.LENIENT);
// 変換
TemporalAccessor parsed = formatter.parse(time);
LocalTime ltime = parsed.query(LocalTime::from);
log.info("{}", ltime);//→ 00:01:02
// 指定した時刻は何日超過しているか
Period period = parsed.query(DateTimeFormatter.parsedExcessDays());
log.info("{}", period);//→ P1D
// 日付変換
LocalDate targetDate = LocalDate.parse(date);
log.info("{}", targetDate);//→ 2017-07-01
// 目的の日時を作る
LocalDateTime result = LocalDateTime.of(targetDate.plus(period), ltime);
log.info("{}", result);//→ 2017-07-02T00:01:02
}
}
検索しても全然出てこなかったってことは、誰も必要としてないのかもしれないですが。。。
プログラミングに疲れたら、甘いもので脳を労わりましょう。
1日1個は卵を食べたほうがいいと聞くので、濃厚卵のプリンはいかがでしょうか。
一風変わったプリンならこちら