일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- json
- vscode
- 이클립스
- 이탈리아
- 배열
- ArrayList
- Visual Studio Code
- Maven
- 테이블
- Button
- 자바스크립트
- Array
- date
- Files
- Java
- js
- windows
- CMD
- CSS
- list
- IntelliJ
- Eclipse
- input
- 문자열
- 인텔리제이
- html
- string
- table
- 자바
- javascript
- Today
- Total
어제 오늘 내일
[Java] Date <-> LocalDate, LocalDateTime 변환하기 본문
- Date -> LocalDate, LocalDateTime
- Date -> Instant -> ZonedDateTime -> LocalDate, LocalDateTime
- Date -> java.sql.Date, java.sql.Timestamp -> LocalDate, LocalDateTime
- LocalDate.ofInstant(), LocalDateTime.ofInstant() : Java 9 이상
- LocalDateTime -> Date
- java.sql.Timestamp.valueOf()
- java.util.Date.from()
- LocalDate -> Date
- java.sql.Date.valueOf()
- java.util.Date.from()
1. Date -> LocalDate, LocalDateTime
1. 1 Date -> Instant -> ZonedDateTime -> LocalDate, LocalDateTime
Date를 LocalDate 또는 LocalDateTime 객체로 변환하기 위해서 다음의 3단계를 거칩니다.
- Date -> Instant
- Instant -> ZonedDateTime
- ZonedDateTime -> LocalDate, LocalDateTime
예제
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateToLocalDateTime {
public static void main(String[] args) {
// 1. Date 객체 생성 (현재날짜)
Date date = new Date();
// 2. Date -> LocalDate
LocalDate localDate = date.toInstant() // Date -> Instant
.atZone(ZoneId.systemDefault()) // Instant -> ZonedDateTime
.toLocalDate(); // ZonedDateTime -> LocalDate
// 3. Date -> LocalDateTime
LocalDateTime localDateTime = date.toInstant() // Date -> Instant
.atZone(ZoneId.systemDefault()) // Instant -> ZonedDateTime
.toLocalDateTime(); // ZonedDateTime -> LocalDateTime
// 4. Date, LocalDate, LocalDateTime 출력
System.out.println(date); // Sun Jun 20 21:09:20 KST 2021
System.out.println(localDate); // 2021-06-20
System.out.println(localDateTime); // 2021-06-20T21:09:20.461
}
}
1. 2 Date -> java.sql.Date, java.sql.Timestamp -> LocalDate, LocalDateTime
Date 객체를 java.sql.Date 또는 java.sql.Timestamp 객체로 변환한뒤
toLocalDate(), toLocalDateTime()를 이용할 수도 있습니다.
Date를 LocalDate로 변환하기
- java.util.Date -> java.sql.Date
- java.sql.Date -> LocalDate
Date를 LocalDateTime으로 변환하기
- java.util.Date -> java.sql.Timestamp
- java.sql.Timestamp -> LocalDateTime
예제
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
public class DateToLocalDateTime {
public static void main(String[] args) {
// 1. Date 객체 생성 (현재날짜)
Date date = new Date();
// 2. Date -> LocalDate
LocalDate localDate = new java.sql.Date(date.getTime()) // java.util.Date -> java.sql.Date
.toLocalDate(); // java.sql.Date -> LocalDate
// 3. Date -> LocalDateTime
LocalDateTime localDateTime = new java.sql.Timestamp(date.getTime()) // java.util.Date -> java.sql.Timestamp
.toLocalDateTime(); // java.sql.Timestamp -> LocalDateTime
// 4. Date, LocalDate, LocalDateTime 출력
System.out.println(date); // Sun Jun 20 21:09:20 KST 2021
System.out.println(localDate); // 2021-06-20
System.out.println(localDateTime); // 2021-06-20T21:09:20.461
}
}
1. 3 LocalDate.ofInstant(), LocalDateTime.ofInstant() : Java 9 이상
Java 9 버전 이상에서는
LocalDate.ofInstant(), LocalDateTime.ofInstant() 메소드를 이용하여
좀 더 쉽게 Date로 변환할 수 있습니다.
public static LocalDate ofInstant(Instant instant, ZoneId zone)
LocalDate 클래스의 ofInstant() 메소드는
Instant와 ZoneId를 파라미터로 받아서 LocalDate로 변환합니다.
public static LocalDateTime ofInstant(Instant instant, ZoneId zone)
LocalDateTime 클래스의 ofInstant() 메소드는
Instant와 ZoneId를 파라미터로 받아서 LocalDateTime으로 변환합니다.
예제
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateToLocalDateTime {
public static void main(String[] args) {
// 1. Date 객체 생성 (현재날짜)
Date date = new Date();
// 2. Date -> LocalDate
LocalDate localDate = LocalDate.ofInstant(date.toInstant(), ZoneId.systemDefault());
// 3. Date -> LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
// 4. Date, LocalDate, LocalDateTime 출력
System.out.println(date); // Sun Jun 20 21:09:20 KST 2021
System.out.println(localDate); // 2021-06-20
System.out.println(localDateTime); // 2021-06-20T21:09:20.461
}
}
2. LocalDateTime -> Date
2. 1 java.sql.Timestamp.valueOf()
public static Timestamp valueOf(LocalDateTime dateTime)
java.sql.Timestamp 클래스의 valueOf() 메소드는
LocalDateTime 객체를 파라미터로 받아서
Timestamp 객체로 변환하여 리턴합니다.
예제
import java.time.LocalDateTime;
import java.util.Date;
public class LocalDateTimeToDate {
public static void main(String[] args) {
// 1. LocalDateTime 객체 생성(현재 시간)
LocalDateTime localDateTime = LocalDateTime.now();
// 2. LocalDateTime -> Date 변환
Date date = java.sql.Timestamp.valueOf(localDateTime);
// 3. LocalDateTime, Date 결과 출력
System.out.println(localDateTime); // 2021-06-20T21:45:14.172849300
System.out.println(date); // 2021-06-20 21:45:14.1728493
}
}
Date date = java.sql.Timestamp.valueOf(localDateTime);
java.sql.Timestamp 클래스는 java.util.Date 클래스의 자식 클래스이므로,
Timestamp 객체를 Date 객체로 형변환 할 수 있습니다.
2. 2 java.util.Date.from()
public static Date from(Instant instant)
java.util.Date 클래스의 static 메소드인 from() 메소드는
Instant를 파라미터로 받아서, Date 객체로 변환하여 리턴합니다.
예제
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class LocalDateTimeToDate {
public static void main(String[] args) {
// 1. LocalDateTime 객체 생성(현재 시간)
LocalDateTime localDateTime = LocalDateTime.now();
// 2. LocalDateTime -> Date 변환
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
// 3. LocalDateTime, Date 결과 출력
System.out.println(localDateTime); // 2021-06-20T21:45:14.172849300
System.out.println(date); // 2021-06-20 21:45:14.1728493
}
}
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date.from()의 파라미터로 Instant를 전달해주기 위해서,
LocalDateTime 객체를 Instant로 변환해 주었습니다.
LocalDateTime -> ZonedDateTime -> Instant
위 순서로 LocalDateTime을 Instant로 변환하였습니다.
3. LocalDate -> Date
3. 1 java.sql.Date.valueOf()
public static Date valueOf(LocalDate date)
java.sql.Date 클래스의 valueOf() 메소드는
LocalDate 객체를 파라미터로 받아서
java.sql.Date 객체로 변환하여 리턴합니다.
예제
import java.time.LocalDate;
import java.util.Date;
public class LocalDateToDate {
public static void main(String[] args) {
// 1. LocalDate 객체 생성(현재 시간)
LocalDate localDate = LocalDate.now();
// 2. LocalDate -> Date 변환
Date date = java.sql.Date.valueOf(localDate);
// 3. LocalDate, Date 결과 출력
System.out.println(localDate); // 2021-06-20
System.out.println(date); // 2021-06-20
}
}
Date date = java.sql.Date.valueOf(localDate);
java.sql.Date 클래스는 java.util.Date 클래스의 자식 클래스이므로,
java.sql.Date.valueOf() 메소드가 리턴하는 값이 java.sql.Date 클래스이지만,
자동으로 타입 캐스팅 되었습니다.
3. 2 java.util.Date.from()
public static Date from(Instant instant)
java.util.Date 클래스의 static 메소드인 from() 메소드는
Instant를 파라미터로 받아서, Date 객체로 변환하여 리턴합니다.
예제
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
public class LocalDateToDate {
public static void main(String[] args) {
// 1. LocalDate 객체 생성(현재 시간)
LocalDate localDate = LocalDate.now();
// 2. LocalDate -> Date 변환
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
// 3. LocalDate, Date 결과 출력
System.out.println(localDate); // 2021-06-20
System.out.println(date); // Sun Jun 20 00:00:00 KST 2021
}
}
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
LocalDate 객체를 Instant로 변환하기 위해,
atStartOfDay() 메소드를 이용하여,
LocalDate 객체를 ZonedDateTime 객체로 변환하였습니다.
LocalDate 클래스의 atStartOfDay() 메소드는,
LocalDate가 가리키는 날짜의 가장 이른 시간을 이용하여, ZonedDateTime 클래스를 생성해줍니다.
그리고, ZonedDateTime 클래스의 toInstant() 메소드를 이용하여
ZonedDateTime 클래스를 Instant로 변환하였습니다.
- Date 객체를 LocalDate, LocalDateTime 객체로 변환하는 방법
- LocalDate, LocalDateTime 객체를 Date 객체로 변환하는 방법
을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] 배열을 Set으로, Set을 배열로 변환하기 (0) | 2021.07.11 |
---|---|
[Java] 파일 이름 변경 / 이동하기 (0) | 2021.06.26 |
[Java] Date를 Calendar로, Calendar를 Date로 변환하기 (0) | 2021.06.20 |
[Java] 날짜 비교하기 ( LocalDate, LocalDateTime, Date, Calendar) (0) | 2021.06.19 |
[Java] 특정 날짜의 요일 구하기 (숫자, 영문, 한글) (0) | 2021.06.19 |