- 패키지 :
java.util
- 날짜 시간 표현 클래스
- java.sql.Date 클래스와 java.sql.Timestamp 클래스의 슈퍼클래스
import java.util.Date;
Date now = new Date();
System.out.println(now); // Thu May 05 13:15:30 KST 2022
- 패키지 :
java.sql
- 날짜 시간 표현 클래스
- JDBC에서 SQL DATE 값을 인식하기 위한 클래스
import java.sql.Date;
Date now = new Date(System.currentTimeMillis());
System.out.println(now); // 2022-05-05
1970-01-01 0:00부터 1/1000초마다 증가하는 long 타입의 정수값
currentTime은 현재시간, Millis는 1000분의 1초
long timestamp = System.currentTimeMillis();
System.out.println(timestamp);
// 1658572859831 (현재 타임스탬프가 출력)
// 개발자가 업로드 제목 정할 때 사용
// 파일 이름으로 하면, 중복 회피 수단으로 사용가능 (계속 숫자가 늘어나니까)
나노초(㎱) 값을 가지는 long 타입의 정수값
어떤 기준일자는 없어서 두 개의 나노초(㎱) 사이의 경과시간 계산용
s > ㎳(밀리, 천분의 1초) > ㎲(마이크로, 백만분의 1초) > ㎱(나노, 십억분의 1초)
long beginTime = System.nanoTime();
int total = 1 + 2 + 3 + 4 + 5;
long endTime = System.nanoTime();
System.out.println(total + "계산에 걸린 시간 : " + (endTime - beginTime) + "㎱");
// 15계산에 걸린 시간 : 300㎱
- 패키지 :
java.util
- 날짜 시간 정보 저장 클래스
- 날짜의 특정 요소 (년, 월, 일, 시, 분, 초, ...)를 쉽게 사용
- 객체 cal은 현재(실행되는 순간) 날짜와 시간으로 구성
import java.util.Calendar;
public class Ex_Calendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
}
}
- 주의사항
손으로 하지 말고, 목록이 뜨면 자동완성으로 선택하자.
WHY? 자동완성 선택시 자동으로 import가 들어오기 때문이다.
년 / 월 / 일 / 요일
import java.util.Calendar;
public class Ex_Calendar {
public static void main(String[] args) {
int year = cal.get(Calendar.YEAR);
// Calendar 클래스에 있는 YEAR 상수값을 가지고 오라.
int month = cal.get(Calendar.MONTH) + 1;
// 월 : 0 ~ 11 (주의!)
int day = cal.get(Calendar.DAY_OF_MONTH);
int weekNo = cal.get(Calendar.DAY_OF_WEEK);
// 요일번호 : 일(1), 월(2), ... 토(7)
System.out.println(year); // 2022
System.out.println(month); // 7
System.out.println(day); // 25
switch(weekNo) {
case 1: System.out.println("일요일"); break;
case 2: System.out.println("월요일"); break;
case 3: System.out.println("화요일"); break;
case 4: System.out.println("수요일"); break;
case 5: System.out.println("목요일"); break;
case 6: System.out.println("금요일"); break;
default: System.out.println("토요일"); break; // 월요일
}
}
}
오전ㆍ오후 / 시 / 분 / 초
import java.util.Calendar;
public class Ex_Calendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int ampm = cal.get(Calendar.AM_PM); // 오전(0), 오후(1)
int hour12 = cal.get(Calendar.HOUR); // 시 (1 ~ 12)
int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 시 (0 ~ 23)
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
switch(ampm) {
case 0: System.out.println("오전"); break;
case 1: System.out.println("오후"); break;
} // 오후
System.out.println(hour12); // 5
System.out.println(hour24); // 17
System.out.println(minute); // 42
System.out.println(second); // 20
}
}
일정 관리의 시간 값(나노초)을 반환한다.
이전에 포스팅 했던, System.currentTimeMillis()
대신에 사용할 수 있다.
// Timestamp
import java.util.Calendar;
public class Ex_Calendar {
public static void main(String[] args) {
long timestamp = cal.getTimeInMillis();
System.out.println(timestamp);
// 1658751136451 (현재 타임스탬프)
}
}
2022-07-25
→ yyyy-MM-dd )import java.time.LocalDateTime;
public class Ex_LocalDateTime {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now(); // 현재 날짜와 시간
}
}
특정 날짜 요소 사용
import java.time.LocalDateTime;
public class Ex_LocalDateTime {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now(); // 현재 날짜와 시간
int year = now.getYear();
int month = now.getMonthValue(); // 1 ~ 12
int day = now.getDayOfMonth(); // 1 ~ 31
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
System.out.println(year); // 2022
System.out.println(month); // 7
System.out.println(day); // 25
System.out.println(hour); // 17
System.out.println(minute); // 45
System.out.println(second); // 20
}
}
java.time.LocalDateTime 패턴
- 패턴의 적용 결과는 String
- 대소문자 주의!
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Ex_LocalDateTime {
public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("a h:mm yyyy-MM-dd");
String date = dtf.format(now);
System.out.println(date); // 오후 5:45 2022-07-25
}
}
- 패키지 :
java.text
- 날짜 시간에 특정 패턴을 적용시킬 수 있는 클래스
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ex_SimpleDateFormat {
public static void main(String[] args) {
Date date1 = new Date();
}
}
import java.util.Date;
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdf.format(now);
import java.util.Date;
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 E요일");
String result = sdf.format(now);
import java.util.Date;
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd a h:mm:ss");
String result = sdf.format(now);
패턴이 적용된 String 타입의 날짜 반환
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ex_SimpleDateFormat {
public static void main(String[] args) {
Date date1 = new Date();
java.sql.Date date2 = new java.sql.Date (System.currentTimeMillis());
//클래스 명명 규칙으로, 동일한 클래스를 동시에 2개는 불러오지 못한다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result1 = sdf.format(date1);
String result2 = sdf.format(date2);
System.out.println(result1); // 2022-07-25 21:13:04
System.out.println(result2); // 2022-07-25 21:13:04
}
}
똑같은 Date 메소드라도 util
과 sql
다른 패키지 이라서 둘 중에 하나만 선언할 수 있다. 이미 import java.util.Date;
를 선언했기 때문에 java.sql.Date
를 중복으로 선언할 수 없다.