개발을 하다 보면 현재 시간을 추출하여 사용할 경우가 생깁니다.
그럴 경우 JAVA에서는 JAVA API를 사용하여 날짜, 시간을 구할 수 있습니다.
아래와 같이, JAVA8 이전과 이후로 사용하는 API가 차이가 납니다.
JAVA8 이전 | JAVA8 이후 |
java.util.Date | java.time.LocalDate |
java.util.Calendar | java.time.LocalTime |
java.time.LocalDateTime |
JAVA8 이전
JAVA8 이전의 날짜와 시간을 나타내는 Date, Calendar 클래스는 많은 부분이 Deprecated(더 이상 사용되지 않거나 중요도가 떨어짐) 되었으며, 가능하면 사용을 권장하지 않습니다.
1. java.util.Date
import java.text.SimpleDateFormat;
import java.util.Date;
public class CurrentDateTime {
public static void main(String[] args) {
// 현재 날짜/시간
Date now = new Date();
// 현재 날짜/시간 출력
System.out.println(now); // Thu May 03 14:43:32 KST 2022
// 포맷팅 정의
SimpleDateFormat formatter = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
// 포맷팅 적용
String formatedNow = formatter.format(now);
// 포맷팅 현재 날짜/시간 출력
System.out.println(formatedNow); // 2022년 05월 03일 14시 43분 32초
}
}
현재 시간
Date now = new Date();
Date객체를 생성하여 현재 시간을 추출하였습니다.
포맷 지정
SimpleDateFormat formatter = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
String formatedNow = formatter.format(now);
SimpleDateFormat 클래스를 이용하여, 원하는 포맷으로 문자열을 생성할 수 있습니다.
yyyy년 MM월 dd일 HH시 mm분 ss초 뿐만 아니라 다양한 포맷을 적용할 수 있습니다.
2. java.util.Calendar
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CurrentDateTime {
public static void main(String[] args) {
// 현재 날짜/시간
Date now = Calendar.getInstance().getTime();
// 현재 날짜/시간 출력
System.out.println(now); // Thu May 03 14:50:24 KST 2022
// 포맷팅 정의
SimpleDateFormat formatter = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
// 포맷팅 적용
String formatedNow = formatter.format(now);
// 포맷팅 현재 날짜/시간 출력
System.out.println(formatedNow); // 2022년 05월 03일 14시 50분 24초
}
}
현재 시간
Calendar.getInstance().getTime();
Calendar의 인스턴스를 생성하여 Calendar 객체의 getTime() 메소드를 호출해 현재시간을 추출하였습니다.
포맷 지정
SimpleDateFormat formatter = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
String formatedNow = formatter.format(now);
Date now = Calendar.getInstance().getTime(); 부분에서 확인할 수 있듯이, getTime() 메소드가 리턴하는 객체가 Date 타입이기 때문에 SimpleDateFormat 클래스를 이용하여 포맷팅 하였습니다.
JAVA8 이후
JAVA8 이후부터는 java.time 패키지의 클래스들을 이용해 날짜와 시간을 표현할 수 있습니다.
또한, java.time.format.DateTimeFormatter 클래스를 이용해 날짜와 시간을 원하는 형식으로 추출할 수 있습니다.
1. java.time.LocalDate
java.time.LocalDate 클래스는 날짜를 표현하는 클래스입니다.
import java.time.LocalDate;
import java.time.ZoneId;
public class CurrentDateTime {
public static void main(String[] args) {
// 현재 날짜 구하기 (시스템 시계, 시스템 타임존)
LocalDate now = LocalDate.now();
// 지역별 현재 날짜 구하기
LocalDate SeoulNow = LocalDate.now(ZoneId.of("Asia/Seoul"));
LocalDate LondonNow = LocalDate.now(ZoneId.of("Europe/London"));
LocalDate VancouverNow = LocalDate.now(ZoneId.of("America/Vancouver"));
// 결과 출력
System.out.println(now); // 2022-05-03
System.out.println(SeoulNow); // 2022-05-03
System.out.println(LondonNow); // 2022-05-03
System.out.println(VancouverNow); // 2022-05-02
// 포맷 정의
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 포맷 적용
String formatedNow = now.format(formatter);
// 결과 출력
System.out.println(formatedNow); // 2022/05/03
// 연도, 월(문자열, 숫자), 일, 일(year 기준), 요일(문자열, 숫자)
int year = now.getYear();
String month = now.getMonth().toString();
int monthValue = now.getMonthValue();
int dayOfMonth = now.getDayOfMonth();
int dayOfYear = now.getDayOfYear();
String dayOfWeek = now.getDayOfWeek().toString();
int dayOfWeekValue = now.getDayOfWeek().getValue();
// 결과 출력
System.out.println(now); // 2022-05-03
System.out.println(year); // 2022
System.out.println(month + "(" + monthValue + ")"); // MAY(5)
System.out.println(dayOfMonth); // 03
System.out.println(dayOfYear); // 122
System.out.println(dayOfWeek + "(" + dayOfWeekValue + ")"); // TUESDAY(2)
}
}
현재 날짜
LocalDateNow();
코드를 통하여 시스템에 default로 지정된 시간과 타임존을 이용해 현재 날짜를 추출합니다.
지역별 날짜
LocalDateNow(ZoneId.of("Asia/Seoul"));
LocalDateNow(ZoneId.of("Europe/London"));
LocalDateNow(ZoneId.of("America/Vancouver"));
코드를 통하여 서울, 런던, 밴쿠버의 시간 적용하여 해당 지역의 시간을 가지고 올 수 있습니다.
포맷 지정
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String formatedNow = now.format(formatter);
코드에서 확인 가능하듯이, DateTimeFormatter 클래스를 이용해 원하는 포맷으로 날짜를 추출할 수 있습니다.
년, 월, 일, 몇 번째 날인지, 요일
int year = now.getYear();
코드를 통해 연도를 추출합니다.
String month = now.getMonth().toString();
getMonth() 메소드는 해당 월을 나타내는, java.time.Month Enum을 리턴합니다.
리턴 받은 Month 객체의 toString() 메소드를 이용해 월 이름을 추출합니다. Month 객체를 사용해 월을 숫자로 출력하고 싶다면, now.getMonth().getValue() 를 사용하여 추출합니다.
int monthValue = now.getMonthValue();
월을 숫자로 표현하기 위해 now.getMonth().getValue()를 사용할 수도 있고, LocalDate 객체의 getMonthValue() 메소드를 사용할 수 있습니다.
int dayOfMonth = now.getDayOfMonth();
int dayOfYear = now.getDayOfYear();
월, 년의 몇 번째 날인지를 int로 추출합니다.
String dayOfWeek = now.getDayOfWeek().toString();
getDayOfWeek() 메소드는 요일을 나타낼 수 있는 DayOfWeek Enum 객체를 리턴합니다. 그리고, DayOfWeek 객체의 toString() 메소드를 이용해, 요일을 텍스트로 출력합니다.
int dayOfWeekValue = now.getDayOfWeek().getValue();
DayOfWeek 객체의 getValue() 메소드를 사용하여 요일을 숫자로 변환할 수 있습니다. 월요일(1) ~ 일요일(7)을 리턴합니다.
2. java.time.LocalTime
java.time.LocalTime 클래스는 시간을 표현하는 클래스입니다.
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class CurrentDateTime {
public static void main(String[] args) {
// 현재 시간
LocalTime now = LocalTime.now();
// 현재시간 출력
System.out.println(now); // 15:45:57.008731300
// 포맷 정의하기
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH시 mm분 ss초");
// 포맷 적용하기
String formatedNow = now.format(formatter);
// 포맷 적용된 현재 시간 출력
System.out.println(formatedNow); // 15시 45분 57초
// 시, 분, 초 구하기
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
// 시, 분, 초 출력
System.out.println(hour); // 15
System.out.println(minute); // 45
System.out.println(second); // 57
}
}
현재 시간 구하기 / 포맷팅 / 시, 분, 초
LocalTime.now();
LocalTime.now() 메소드를 사용하여 현재 시간을 추출합니다.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH시 mm분 ss초");
String formatedNow = now.format(formatter);
DateTimeFormatter클래스를 이용해 시간을 원하는 포맷의 문자열로 변환합니다.
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
getHour(), getMinute(), getSecond() 메소드를 이용해 시, 분, 초를 추출할 수 있습니다.
3. java.time.LocalDateTime
java.time.LocalDateTime 클래스는 날짜와 시간을 표현하는 클래스입니다.
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class CurrentDateTime {
public static void main(String[] args) {
// 현재 날짜/시간
LocalDateTime now = LocalDateTime.now();
// 현재 날짜/시간 출력
System.out.println(now); // 2022-05-03T15:52:21.419878100
// 포맷팅
String formatedNow = now.format(DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 ss초"));
// 포맷팅 현재 날짜/시간 출력
System.out.println(formatedNow); // 2022년 05월 03일 15시 52분 21초
// 년, 월(문자열, 숫자), 일(월 기준, 년 기준), 요일(문자열, 숫자), 시, 분, 초 구하기
int year = now.getYear(); // 연도
String month = now.getMonth().toString(); // 월(문자열)
int monthValue = now.getMonthValue(); // 월(숫자)
int dayOfMonth = now.getDayOfMonth(); // 일(월 기준)
int dayOfYear = now.getDayOfYear(); // 일(년 기준)
String dayOfWeek = now.getDayOfWeek().toString(); // 요일(문자열)
int dayOfWeekValue = now.getDayOfWeek().getValue(); // 요일(숫자)
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
// 년, 월(문자열, 숫자), 일(월 기준, 년 기준), 요일(문자열, 숫자), 시, 분, 초 출력
System.out.println("년 : " + year); // 년 : 2022
System.out.println("월 : " + month + "(" + monthValue + ")"); // 월 : MAY(5)
System.out.println("일(월기준) : " + dayOfMonth); // 일(월기준) : 03
System.out.println("일(년기준) : " + dayOfYear); // 일(년기준) : 122
System.out.println("요일 : " + dayOfWeek + "(" + dayOfWeekValue + ")"); // 요일 : TUESDAY(2)
System.out.println("시간 : " + hour); // 시간 : 15
System.out.println("분 : " + minute); // 분 : 53
System.out.println("초 : " + second); // 초 : 35
}
}
LocalDate, LocalTime 클래스에서 년, 월, 일, 요일, 시, 분, 초를 각각 추출했던 거와 같이 LocalDateTime 클래스의 메소드를 이용해 추출할 수 있습니다.
'JAVA' 카테고리의 다른 글
[JAVA] 날짜 비교하기(Date, Calendar, LocalDate, LocalDateTime) (3) | 2022.06.13 |
---|---|
[JAVA] Get 방식과 Post 방식 (2) | 2022.06.03 |
[JAVA] Collection Framework(List, Queue, Set)과 MAP (4) | 2022.03.31 |
[JAVA] Garbage Collection의 개념과 동작 원리 (2) | 2022.03.28 |
[JAVA] Lambda Expression(람다식) (4) | 2022.03.15 |
댓글