JAVA_DateTime 클래스

JW__1.7·2022년 7월 25일
0

JAVA 공부일지

목록 보기
8/30

Date 클래스

  • 패키지 : 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

날짜와 시간 (datetime)

1. 타임스탬프 (timeStamp)

1970-01-01 0:00부터 1/1000초마다 증가하는 long 타입의 정수값
currentTime은 현재시간, Millis는 1000분의 1초

	long timestamp = System.currentTimeMillis();
	System.out.println(timestamp);	
    // 1658572859831 (현재 타임스탬프가 출력)
    // 개발자가 업로드 제목 정할 때 사용
    // 파일 이름으로 하면, 중복 회피 수단으로 사용가능 (계속 숫자가 늘어나니까)

2. 나노타임 (nanoTime)

나노초(㎱) 값을 가지는 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㎱

Calendar 클래스

  • 패키지 : 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 (현재 타임스탬프)
    }
 }    

LocalDateTime 클래스

  • JDK 1.8부터 사용 가능한 클래스
  • 특정 날짜 요소 사용이 가능
  • 날짜의 패턴 지정이 가능 ( 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		
	}
}

SimpleDateFormat 클래스

  • 패키지 : java.text
  • 날짜 시간에 특정 패턴을 적용시킬 수 있는 클래스
import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex_SimpleDateFormat {

	public static void main(String[] args) {
    	Date date1 = new Date();
	}
}

  • 형식 : 2022-05-05 13:15:30
import java.util.Date; 

Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String result = sdf.format(now);
  • 형식 : 2022년 05월 05일 목요일
import java.util.Date; 

Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 E요일"); 
String result = sdf.format(now);
  • 형식 : 2022/05/05 오후 1:15:30
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 메소드라도 utilsql 다른 패키지 이라서 둘 중에 하나만 선언할 수 있다. 이미 import java.util.Date;를 선언했기 때문에 java.sql.Date를 중복으로 선언할 수 없다.

0개의 댓글