본문 바로가기
JAVA

JAVA_날짜와 시간

by haheaven 2021. 8. 4.

 

 

 

- Calendar : 날짜와 시간 클래스

1. get()으로 날짜+시간 필드 가져오기

 : int get(int field).  - > getInstance()는 Calendar클래스에 맞는 메서드를 데리고 옴.

Calendar cal = Calendar.getInstance());  //현재시간

2.  setInstance() : 내가 설정 가능

Calendar cal = Calendar.getInstance(); //현재 시간에서 
cal.set(Calendar.HOUR_OF_DAY, 10) // 10시로
cal.set(Calendar.MINUTE, 20) // 20분으로
cal.set(Calendar.SECOND, 30) // 30초로

 

 

* Calendar의 다양한 필드 예제(자바의정석  Ex10_1) 

import java.util.Calendar;

public class Ex10_1 {

 public static void main(String[] args) {
	//기본적으로 현재날짜와 시간으로 설정 
	Calendar today = Calendar.getInstance();
	System.out.println("이 해의 년도: " + today.get(Calendar.YEAR));
	System.out.println("월(0~11, 0:1월  : " + today.get(Calendar.MONTH));
	System.out.println("이 해의 몇째 주: " + today.get(Calendar.WEEK_OF_YEAR));
	System.out.println("이 달의 몇째 주: " + today.get(Calendar.WEEK_OF_MONTH));
	System.out.println();
	//DATE와 DAY는 같다. 
	System.out.println("이 달의 몇 일: " + today.get(Calendar.DATE));
	System.out.println("이 달의 몇 일: " + today.get(Calendar.DAY_OF_MONTH));
	System.out.println("이 해의 몇 일: " + today.get(Calendar.DAY_OF_YEAR));
	System.out.println("요일(1~7) 1 : 일요일 : " + today.get(Calendar.DAY_OF_WEEK));
	System.out.println("이 달의 몇째 요일: " + today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
	System.out.println();		
    System.out.println("오전_오후(0:오전, 1:오후) : " + today.get(Calendar.AM_PM));
	System.out.println("시간(0~11): " + today.get(Calendar.HOUR));
	System.out.println("시간(0~23): " + today.get(Calendar.HOUR_OF_DAY));
	System.out.println("분(0~59): " + today.get(Calendar.MINUTE));
	System.out.println("초(0~59): " + today.get(Calendar.SECOND));
	System.out.println("1000분의 1초(0~999): " + today.get(Calendar.MILLISECOND));
	 //천분의 일초를 시간으로 표현하기 위해 3600000으로 나눔(1시간 = 60*60)
	System.out.println("TIMEZONE(-12~+12): " + today.get(Calendar.ZONE_OFFSET)/(60*60*1000));
	System.out.println("이 달의 마지막 달 : " + today.getActualMaximum(Calendar.DATE));
	}
}

 

** 달력만들기(자바의 정석 Ex10_6)

import java.util.*;

public class Chpater10 {
 public  static void main(String[] args) {
    //main의 매개변수 년, 월 없으면 "Usage : java CalendarEx10 2021 08" 출력 
	if( args.length != 2) {
		System.out.println("Usage : java CalendarEx10 2021 08");
	 return;
	}
	int year = Integer.parseInt(args[0]);  //년을 int로
	int month = Integer.parseInt(args[1]);  //월을 int로 
	int START_DAY_OF_WEEK = 0;  //시작 요일 초기화 
	int END_DAY = 0;            //끝일 초기화 
	
	Calendar sDay = Calendar.getInstance();  //시작일 
	Calendar eDay = Calendar.getInstance();  //끝일 
	
    //월은 배열 0부터 시작하므로 0이 1월,, 원하는 달력원하면 배열-1
	sDay.set(year, month-1, 1);
	eDay.set(year, month, 1);
	
    //담달에서 해당 월 마지막값구하기 위해 담달 첫날에 -1 add()함수 이용
	eDay.add(Calendar.DATE, -1); 
	
    //첫날 요일 구하기 
	START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK);
	
	END_DAY = eDay.get(Calendar.DATE);
	
	System.out.println("      "+args[0]+"년 "  +args[1] + "월");
	System.out.println(" 일  월  화  수 목  금 토");
	
    
    //해당 월의 1일이 수요일이면 일, 월, 화 빈칸 생성해야하므로 시작일전까지 빈칸 넣기 반복문 
	for(int i=1; i<START_DAY_OF_WEEK; i++) {
		System.out.print("   ");
	}	
    
    //간격일정위해 10넘으면 빈칸한개 안넘으면 빈칸두개
    //요일 7넘으면 다음줄로..
	for(int i=1, n=START_DAY_OF_WEEK; i<=END_DAY; i++, n++) {
		System.out.print((i<10) ? "  " +i : " "+i);
		if(n%7==0) System.out.println();
	}
 } 	
}

 

 

- time : 날짜, 시간, 날짜와시간 ,, 개선된 패키지

: 날짜와 시간을 함께 표현하는 Calendar에서 java.time에서는 시간과 날짜를 분리함 --> JDK1.8에서 그전 단점 보완 

 

-객체생성 방법1. now()

LocalDATE date = LocalDATE.now();  // 현재날짜
 LocalTime now = LocalTime.now();  // 현재시간

-객체생성 방법1. of() 

LocalDate birthDate = LocalDate.of(1999, 12, 31); //내가설정한 날짜 
LocalTime birthTime = LocalTime.of(23, 59,58);    //내가 설정한 시간

 

'JAVA' 카테고리의 다른 글

JAVA_컬렉션 프레임워크(Set, Map)  (0) 2021.08.06
JAVA_컬렉션 프레임워크(List)  (0) 2021.08.05
JAVA_예외처리  (0) 2021.08.03
JAVA_인터페이스  (0) 2021.08.02
JAVA_추상화  (0) 2021.08.01

댓글