#やりたいこと
- 頻繁に使う下記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();
#参考サイト
-
Sting -> java.sql.Date
https://www.sejuku.net/blog/19077#StringSQLDate -
String -> LocalDateTime
https://qiita.com/riekure/items/d83d4ea5d8a19a267453 -
java.util.Date -> LocalDate
https://qiita.com/hryshtk/items/43991beaabbb9d587360 -
LocalDate -> java.sql.Date
https://code-examples.net/ja/q/15ddf55