人生のエラー集

人生のエラー集

バグ出し率トップを誇るへっぽこプログラマーが発生させたエラーをメモのために残します。
同じエラーで悩む人の解決策になりますように…

趣味のことも書いたりしますが。

Amebaでブログを始めよう!

最近、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個は卵を食べたほうがいいと聞くので、濃厚卵のプリンはいかがでしょうか。

 

 

一風変わったプリンならこちら