문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
java:8:datetime [2016/07/04 14:46] kwon37xi |
java:8:datetime [2020/01/29 13:33] kwon37xi [Java 8 Date & Time] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java 8 Date & Time ====== | ====== Java 8 Date & Time ====== | ||
+ | * [[java: | ||
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | ===== java.util.Date <-> LocalDate/ | ||
+ | * [[http:// | ||
+ | |||
+ | <code java> | ||
+ | /** | ||
+ | * Calls {@link # | ||
+ | */ | ||
+ | public static LocalDate asLocalDate(java.util.Date date) { | ||
+ | return asLocalDate(date, | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Creates {@link LocalDate} from {@code java.util.Date} or it's subclasses. Null-safe. | ||
+ | */ | ||
+ | public static LocalDate asLocalDate(java.util.Date date, ZoneId zone) { | ||
+ | if (date == null) { | ||
+ | return null; | ||
+ | } | ||
+ | |||
+ | if (date instanceof java.sql.Date) { | ||
+ | return ((java.sql.Date) date).toLocalDate(); | ||
+ | } else { | ||
+ | return Instant.ofEpochMilli(date.getTime()).atZone(zone).toLocalDate(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Calls {@link # | ||
+ | */ | ||
+ | public static LocalDateTime asLocalDateTime(java.util.Date date) { | ||
+ | return asLocalDateTime(date, | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Creates {@link LocalDateTime} from {@code java.util.Date} or it's subclasses. Null-safe. | ||
+ | */ | ||
+ | public static LocalDateTime asLocalDateTime(java.util.Date date, ZoneId zone) { | ||
+ | if (date == null) { | ||
+ | return null; | ||
+ | } | ||
+ | |||
+ | if (date instanceof java.sql.Timestamp) { | ||
+ | return ((java.sql.Timestamp) date).toLocalDateTime(); | ||
+ | } else { | ||
+ | return Instant.ofEpochMilli(date.getTime()).atZone(zone).toLocalDateTime(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Calls {@link # | ||
+ | */ | ||
+ | public static java.util.Date asUtilDate(Object date) { | ||
+ | return asUtilDate(date, | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Creates a {@link java.util.Date} from various date objects. Is null-safe. Currently supports:< | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | * </ul> | ||
+ | * | ||
+ | * @param zone Time zone, used only if the input object is LocalDate or LocalDateTime. | ||
+ | * | ||
+ | * @return {@link java.util.Date} (exactly this class, not a subclass, such as java.sql.Date) | ||
+ | */ | ||
+ | public static java.util.Date asUtilDate(Object date, ZoneId zone) { | ||
+ | if (date == null) { | ||
+ | return null; | ||
+ | } | ||
+ | |||
+ | if (date instanceof java.sql.Date || date instanceof java.sql.Timestamp) { | ||
+ | return new java.util.Date(((java.util.Date) date).getTime()); | ||
+ | } | ||
+ | if (date instanceof java.util.Date) { | ||
+ | return (java.util.Date) date; | ||
+ | } | ||
+ | if (date instanceof LocalDate) { | ||
+ | return Date.from(((LocalDate) date).atStartOfDay(zone).toInstant()); | ||
+ | } | ||
+ | if (date instanceof LocalDateTime) { | ||
+ | return Date.from(((LocalDateTime) date).atZone(zone).toInstant()); | ||
+ | } | ||
+ | if (date instanceof ZonedDateTime) { | ||
+ | return Date.from(((ZonedDateTime) date).toInstant()); | ||
+ | } | ||
+ | if (date instanceof Instant) { | ||
+ | return Date.from((Instant) date); | ||
+ | } | ||
+ | |||
+ | throw new UnsupportedOperationException(" | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Creates an {@link Instant} from {@code java.util.Date} or it's subclasses. Null-safe. | ||
+ | */ | ||
+ | public static Instant asInstant(Date date) { | ||
+ | if (date == null) { | ||
+ | return null; | ||
+ | } else { | ||
+ | return Instant.ofEpochMilli(date.getTime()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Calls {@link # | ||
+ | */ | ||
+ | public static ZonedDateTime asZonedDateTime(Date date) { | ||
+ | return asZonedDateTime(date, | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Creates {@link ZonedDateTime} from {@code java.util.Date} or it's subclasses. Null-safe. | ||
+ | */ | ||
+ | public static ZonedDateTime asZonedDateTime(Date date, ZoneId zone) { | ||
+ | if (date == null) { | ||
+ | return null; | ||
+ | } else { | ||
+ | return asInstant(date).atZone(zone); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
===== Time Mocking for test ===== | ===== Time Mocking for test ===== | ||
* refer to [[http:// | * refer to [[http:// | ||
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
+ |