저장하는개발자
article thumbnail
Published 2021. 6. 2. 15:13
JAVA - DATE, Calendar, 프로그래밍/JAVA

프로그래밍을 하다보면 날짜관련된 데이터를 관리해야할때가 있을것같다.

자바에서는 대표적으로사용적인 두가지의 클래스가있다

package 는 java.util 에있다.

 

Date 클래스

Date클래스는 자바가 처음만들어 지고나서부터 계속 사용중인 클래스이다.

하지만 다국적에서 사용하기가 많이불편하여 현재는 Deprecated 애너테이션으로 작성되어있다.

뜻은 사용은가능하지만 권장하지않음, 사용하지 말아달라는 권고사항이다.

@Deprecated 

 

하지만 Date 클래스중 아직 Deprecated 안붙은 생성자도있다 .

기본생성자인 Date();

기본 생성자 Date()

 

Date(Long l)

 

위의 두가지 생성자는 사용이가능하다

 

Date 클래스 사용법

// Date 클래스 임포트
import java.util.Date;

public class A_Date{
	// Date() 생성
    // 이렇게생성중이면 현재 오늘날짜로 생성된다.
    
    Date d = new Date();
	System.out.println("기본 생성자 (오늘 날짜) : " + d);
    // 출력 
    // 기본 생성자 (오늘 날짜) : Wed Jun 02 14:48:37 KST 2021
    
    // Date(long) -> 1970년 1월 1일 0시 0분 0초부터 경과한 날짜와 시간을 저장한 객체 생성
    Date d2 = new Date(1234567890000L);
    System.out.println("매개변수 생성자 (long형) : " + d2);
    // 출력
    // 매개변수 생성자 (long형) : Sat Feb 14 08:31:30 KST 2009
}

 

Date Setter/Getter

date 클래스의 set(값 설정), get(값 가져오기) 등의 메소드가있는데 Date 클래스는 Deprecated 이기때문에 사용안하는걸추천하지만 사용법을 간단하게 작성해보겠다.

// 1. Date 객체 생성
Date d = new Date();

// set()
d.setYear(2020 - 1900); // 년도설정
                        //00 빼는 이유는 Date의 Year 기본값이 1900으로
                        // 되어 있기 때문에 1900을 빼줘야 정상으로 세팅된다.
                        
d.setMonth(5 - 1); // 월은 0~11 으로 세팅되어있음
d.setDate(15); // 일 설정
System.out.println("setter 이용해서 값 초기화 : " + date2);
// 출력
// setter 이용해서 값 초기화 : Tue May 15 14:48:37 KST 2018

//get()
System.out.println(date2.getYear() + 1900 + "년");
System.out.println(date2.getMonth() + 1 + "월");
System.out.println(date2.getDate() + "일");

// 출력 
// 2018년
// 5월
// 15일
 

그만알아보자 ..

 

Calendar

Date 클래스와 똑같이 날짜 데이터를 사용할수있는 클래스이다.

캘린더는 JDK1.1부터 생성되어서 사용중이다.

Calendar 클래스는 생성자가 protected이기 때문에 new연산자를 통하여 객체를 생성하는것이 아니고, Calendar.getInstance() 메소드이용하여 생성하여야한다.

// Calendar c1 = new Calendar(); 호출x
Calendar c2 = Calendar.getInstance(); 호출o

 

Calendar 코드사용

Calendar cToday = Calendar.getInstance();

// get 메소드로 년월일시분초 추출
int year = cToday.get(Calendar.YEAR); // 년도
int month = cToday.get(Calendar.MONTH) + 1; // 월 0~11 반환
int date = cToday.get(Calendar.DATE); // 일
int ampm = cToday.get(Calendar.AM_PM); // 오전이면 0 오후면 1 반환
int hour = cToday.get(Calendar.HOUR); // 시간
int min = cToday.get(Calendar.MINUTE); // 분
int sec = cToday.get(Calendar.SECOND); // 초

String sAmpm = (ampm == Calendar.AM) ? "오전" : "오후"; // 0이면 오전 , 1이면 오후 String으로 반환

System.out.printf("%d년 %02d월 %02d일 %s %02d시 %02d분 %02d 초%n",year,month, date, sAmpm, hour, min, sec);
// 출력 (실행시간마다 출력값 다를수있음)
// 2021년 06월 02일 오후 03시 01분 49 초

 

SimpleDateFormat

데이터를 생성하고 출력할때 원하는형식으로 출력할수있게 도와주는 간편한 클래스!

// Date 객체 이용방법
// 1. Date 객체 생성
// 현재 년월일 : 2021년 06월 02일
Date d = new Date();

// 2. SimpleDateFormat 객체 생성
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //년도-월-일
// 사용자가 출력하고 싶은 내용으로 수정가능
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy?MM?dd"); // 년도?월?일
// 3. SimpleDateFormat클래스의 format() 메소드 이용하여 호출

String str = sdf.format(d); //format에는 Date타입의 참조변수만 들어갈수있다.
System.out.println(str);
// 출력
// 2021년 06월 02일

// Calendar 객체 이용방법
// 1. Calendar 객체생성
Calendar c = Calendar.getInstance(); 

// 2. SimpleDateFormat 객체 생성
SimpleDateFormat s1 = new SimpleDateFormat("yyyy.MM.dd"); // 년도.월.일

// 3.포맷데이터형식으로 출력
// s1.format(c); //으로 작성하면 에러 format(Date) << 매개변수는 Date클래스 형식만받을수있음
// Calendar 으로 작석시
String str1 = s1.format(c.getTime()); //Date형식으로 변환해주는 getTime() 메소드 이용하여 출력
System.out.println(str1);
// 출력
// 2021.06.02

 

출처 : https://mindols.tistory.com/90 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA - I.O(입출력) > 기반 스트림  (2) 2021.06.03
JAVA - 예외처리  (0) 2021.06.03
JAVA - String 클래스  (0) 2021.05.31
JAVA - 객체(toString(), equals(), hashCode())  (0) 2021.05.27
JAVA - 상속  (0) 2021.05.26
profile

저장하는개발자

@저장하는개발자

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!