Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Java] 날짜 시간 클래스 LocalDateTime과 형식클래스 DateTimeFormatter 본문
Date 객체와 SimpleDateFormat
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM.dd HH:mm:ss");
sdf.format(now)
Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date객체로 만든다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM.dd HH:mm:ss");
sdf.format(now)
Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date객체로 만든다.
public class DateExample {
public static void main(String[] args) {
Date now = new Date();
String strNow = now.toString();
System.out.println(strNow); //Tue Aug 09 00:55:51 KST 2023
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
String formatted = sdf.format(now);
System.out.println(formatted); //2023.08.09 00:55:51
}
}
Calendar now = Calendar.getInstance();
컴퓨터에 설정된 시간대를 기준으로 Calendar 하위객체를 얻을 수 있다.
✏️ Calendar에 정의된 상수를 get() 메서드의 매개변수로 넘겨주면, 해당 상수가 의미하는 값을 리턴한다.
📍 Calendar.YEAR
📍 Calendar.MONTH
📍 Calendar.DAY_OF_MONTH
📍 Calendar.DAY_OF_WEEK Calendar.MONDAY ...
📍 Calendar.AM_PM Calendar.AM ...
📍 Calendar.HOUR
📍 Calendar.MINUTE
📍 Calendar.SECOND
✏️ Calendar에 정의된 상수를 get() 메서드의 매개변수로 넘겨주면, 해당 상수가 의미하는 값을 리턴한다.
📍 Calendar.YEAR
📍 Calendar.MONTH
📍 Calendar.DAY_OF_MONTH
📍 Calendar.DAY_OF_WEEK Calendar.MONDAY ...
📍 Calendar.AM_PM Calendar.AM ...
📍 Calendar.HOUR
📍 Calendar.MINUTE
📍 Calendar.SECOND
LocalDateTime 객체와 DataTimeFormatter
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy.MM.dd a HH:mm:ss");
now.format(dtf);
🎯 LocalDateTime 객체로 날짜/시간을 조작하거나 비교할 수 있다.
🕹️. 조작
ex. LocalDateTime res = now.plusYear(1);
ex. LocalDateTime res2 = now.minusMonths(2);
ex. LocalDateTime res3 = now.plusDays(7);
🩻. 비교
now.isAfter(other);
now.isBefore(other);
now.isEqual(other);
⭐. 특정 날짜 시간 기준으로 LocalDateTime 객체 얻기
LocalDateTime target = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy.MM.dd a HH:mm:ss");
now.format(dtf);
🎯 LocalDateTime 객체로 날짜/시간을 조작하거나 비교할 수 있다.
🕹️. 조작
ex. LocalDateTime res = now.plusYear(1);
ex. LocalDateTime res2 = now.minusMonths(2);
ex. LocalDateTime res3 = now.plusDays(7);
🩻. 비교
now.isAfter(other);
now.isBefore(other);
now.isEqual(other);
⭐. 특정 날짜 시간 기준으로 LocalDateTime 객체 얻기
LocalDateTime target = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second);
⭐. 남은 일 수 계산하기
import java.time.temporal.ChronoUnit;
...
public class DateTimeCompare {
public static void main(String[] args) {
DateTimeFormatter dtf = DataTimeFormatter.ofPattern("yyyy,MM,dd HH:mm:ss");
LocalDateTime startDateTime = LocalDateTime.of(2023, 8, 9, 0, 0, 0);
System.out.println("시작일: " + startDateTime.format(dtf));
LocalDateTime endtDateTime = LocalDateTime.of(2023, 12, 31, 0, 0, 0);
System.out.println("종료일: " + endtDateTime.format(dtf));
long remainDay = startDateTime.until(endDateTime, ChronoUnit.DAYS);
System.out.println("남은 일: " + remainDay);
}
}
> 🦔 ChronoUnit
java.time 패키지에서 제공되는 열거형(Enum) 클래스이다.
다양한 시간 단위를 나타내는 상수를 제공
다양한 시간 단위를 나타내는 상수를 제공
☁️ SimpleDateFormat vs DateTimeFormatter
SimpleDateFormat은 멀티 스레드 환경에서 Thread-safe를 보장하지 않는다.
DateTimeFormatter는 불변성을 가진다, 한번 설정한 포맷을 변경할 수 ❌
DateTimeFormatter는 LocalDateTime와 함께 사용가능 ⭕
DateTimeFormatter는 불변성을 가진다, 한번 설정한 포맷을 변경할 수 ❌
DateTimeFormatter는 LocalDateTime와 함께 사용가능 ⭕
'Backend > 자바' 카테고리의 다른 글
[Java] 메타정보를 관리하는 Class객체, 리플렉션을 통한 리소스 경로 얻기 (0) | 2023.08.11 |
---|---|
[Java] 정규표현식(regExp)과 Pattern 클래스로 검증 (0) | 2023.08.09 |
[Java] JDBC드라이버 의존성을 추가하고, Connection 객체를 생성해 ConnectionPool 구현하기 (0) | 2023.08.06 |
[Java] 모듈: 패키지 은닉과 전이 의존 (0) | 2023.08.05 |
[Java] eclipse에서 jar 압축파일 형태의 라이브러리 생성 및 적용 (0) | 2023.08.04 |
Comments