문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:8:datetime [2016/09/28 16:18] kwon37xi |
java:8:datetime [2022/05/11 16:47] (현재) kwon37xi [systemDefaultTimeZone 과 LocalDateTime] |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Java 8 Date & Time ====== | ====== Java 8 Date & Time ====== | ||
| + | * [[java: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| ===== java.util.Date <-> LocalDate/ | ===== java.util.Date <-> LocalDate/ | ||
| * [[http:// | * [[http:// | ||
| <code java> | <code java> | ||
| - | |||
| /** | /** | ||
| * Calls {@link # | * Calls {@link # | ||
| 줄 19: | 줄 20: | ||
| */ | */ | ||
| public static LocalDate asLocalDate(java.util.Date date, ZoneId zone) { | public static LocalDate asLocalDate(java.util.Date date, ZoneId zone) { | ||
| - | if (date == null) | + | if (date == null) { |
| return null; | return null; | ||
| + | } | ||
| if (date instanceof java.sql.Date) { | if (date instanceof java.sql.Date) { | ||
| 줄 40: | 줄 42: | ||
| */ | */ | ||
| public static LocalDateTime asLocalDateTime(java.util.Date date, ZoneId zone) { | public static LocalDateTime asLocalDateTime(java.util.Date date, ZoneId zone) { | ||
| - | if (date == null) | + | if (date == null) { |
| return null; | return null; | ||
| + | } | ||
| - | if (date instanceof java.sql.Timestamp) | + | if (date instanceof java.sql.Timestamp) |
| return ((java.sql.Timestamp) date).toLocalDateTime(); | return ((java.sql.Timestamp) date).toLocalDateTime(); | ||
| - | else | + | |
| return Instant.ofEpochMilli(date.getTime()).atZone(zone).toLocalDateTime(); | return Instant.ofEpochMilli(date.getTime()).atZone(zone).toLocalDateTime(); | ||
| + | } | ||
| } | } | ||
| 줄 72: | 줄 76: | ||
| */ | */ | ||
| public static java.util.Date asUtilDate(Object date, ZoneId zone) { | public static java.util.Date asUtilDate(Object date, ZoneId zone) { | ||
| - | if (date == null) | + | if (date == null) { |
| return null; | return null; | ||
| + | } | ||
| - | if (date instanceof java.sql.Date || date instanceof java.sql.Timestamp) | + | if (date instanceof java.sql.Date || date instanceof java.sql.Timestamp) |
| return new java.util.Date(((java.util.Date) date).getTime()); | return new java.util.Date(((java.util.Date) date).getTime()); | ||
| - | if (date instanceof java.util.Date) | + | |
| + | | ||
| return (java.util.Date) date; | return (java.util.Date) date; | ||
| - | if (date instanceof LocalDate) | + | |
| - | return | + | |
| - | if (date instanceof LocalDateTime) | + | return Date.from(((LocalDate) date).atStartOfDay(zone).toInstant()); |
| - | return | + | } |
| - | if (date instanceof ZonedDateTime) | + | if (date instanceof LocalDateTime) |
| - | return | + | return Date.from(((LocalDateTime) date).atZone(zone).toInstant()); |
| - | if (date instanceof Instant) | + | } |
| - | return | + | if (date instanceof ZonedDateTime) |
| + | return Date.from(((ZonedDateTime) date).toInstant()); | ||
| + | } | ||
| + | if (date instanceof Instant) | ||
| + | return Date.from((Instant) date); | ||
| + | } | ||
| throw new UnsupportedOperationException(" | throw new UnsupportedOperationException(" | ||
| 줄 125: | 줄 136: | ||
| * refer to [[http:// | * refer to [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Duration 기반으로 흐른 시간 검사 ===== | ||
| + | * [[https:// | ||
| + | <code java> | ||
| + | var start = Instant.now(); | ||
| + | Thread.sleep(2042); | ||
| + | var duration = Duration.between(start, | ||
| + | System.out.printf(" | ||
| + | </ | ||
| + | |||
| + | ===== systemDefaultTimeZone 과 LocalDateTime ===== | ||
| + | * [[https:// | ||
| + | * 그리고 [[https:// | ||
| + | * 따라서, **'' | ||
| + | * 이로인해 Test 코드에서 '' | ||