LoginSignup
22
17

More than 3 years have passed since last update.

【Java】日付型変換

Last updated at Posted at 2019-05-27

やりたいこと

  • 頻繁に使う下記5つの型の変換方法を記載
    • String
    • java.util.Date
    • java.sql.Date
    • LocalDate
    • LocalDateTime

String

-> java.util.Date

    //  変換 : SimpleDateFormat
    //  例外 : ParseException
    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
    date = format.parse("2019/04/01");

-> java.sql.Date

    // 変換 : なし
    // 例外 : なし
    // 区切り文字は「ハイフン(-)のみ許容」
  java.sql.Date sqlDate= java.sql.Date.valueOf("2019-04-01");

-> LocalDate

    // 変換 : DateTimeFormatter
    // 例外 : なし (DateTimeParseException) 
    LocalDate.parse("2019/4/1", DateTimeFormatter.ofPattern("yyyy/MM/dd")); // 0埋め必須 (例外発生)
    LocalDate.parse("2019/4/1", DateTimeFormatter.ofPattern("yyyy/M/d")) ;   // 0埋め不要

-> LocalDateTime

    // 変換 : DateTimeFormatter
    // 例外 : なし (DateTimeParseException)
    LocalDateTime.parse("2019/04/01", DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));

java.util.Date

-> String

    // 変換 : SimpleDateFormat 
    // 例外 : なし
    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
    format.format(new Date());

-> java.sql.Date

    // 変換 : なし
    // 例外 : なし
    // ポイント : いったんミリ秒 (エポック時間:1970年からの経過時間を引数にする。)
    java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());

-> LocalDate

    // 変換 : Instant, ZoneDateTime
    // 例外 : なし
    Date date = new Date();
    LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

-> LocalDateTime

    // 変換 : Instant, ZoneDateTime
    // 例外 : なし
    LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

java.sql.Date

-> String

    // 変換 - 
    // 例外 - 
    java.sql.Date date = java.sql.Date.valueOf("2019-04-01");
    String strDate = date.toString();

-> java.util.Date

    明日書きます

-> LocalDate

 明日書きます

-> LocalDateTime

 明日書きます

LocalDate

-> String

    // 変換 : DateTimeFormatter
    // 例外 : なし
    LocalDate localDate = LocalDate.of(2019, 04, 01);
    String strDate = localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));

-> java.util.Date

    // 変換 : SimpleDateFormat
    // 例外 : ParseException
    // ポイント : LocalDate -> String -> Date
  localDate = LocalDate.of(2019, 04, 01);
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    date = format.parse(localDate.toString());

-> java.sql.Date

    // 変換 : -
    // 例外 : -
    LocalDate localDate = LocalDate.of(2019, 04, 01);
    java.sql.Date sqlDate = java.sql.Date.valueOf(localDate);

-> LocalDateTime

    // 変換 : -
    // 例外 : -
    // ポイント : 時分秒は00:00:00
    LocalDate localDate = LocalDate.of(2019, 04, 01);    
    LocalDateTime localDateTime = localDate.atStartOfDay();

LocalDateTime

-> String

    // 変換 : DateTimeFormatter
    // 例外 : -
    LocalDateTime localDate = LocalDateTime.of(2019, 04, 01, 23, 59, 58);
    String strDate = localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm:ss"));

-> java.util.Date

    // 変換 : LocalDateTime -> ZonedDateTime -> Instant -> Date
    // 例外 -
    LocalDateTime localDateTime = LocalDateTime.of(2019, 04, 01, 23, 59, 58);
    Date date = Date.from(ZonedDateTime.of(localDateTime, ZoneId.systemDefault()).toInstant());

-> java.sql.Date

    // 変換 : LocalDateTime -> LocalDate -> sql.Date
    // 例外 : -
    LocalDateTime localDateTime = LocalDateTime.of(2019, 04, 01, 23, 59, 58);
    java.sql.Date sqlDate = java.sql.Date.valueOf(localDateTime.toLocalDate());

-> LocalDate

    // 変換 : -
    // 例外 : -
    LocalDateTime localDateTime = LocalDateTime.of(2019, 04, 01, 23, 59, 58);
    LocalDate localDate = localDateTime.toLocalDate();

参考サイト

22
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
17