KDT/Java

240129 Java - 날짜와 시간을 다루는 클래스

001cloudid 2024. 1. 29. 10:56
728x90

날짜와 시간을 다루는 클래스

  1. java.util.Date
    JDK1.1버전부터 여러가지 문제가 생겨 대부분의 메소드와 생성자가 사용되지 않게 되었음
  2. java.util.Calendar Date
    클래스를 개선한 새로운 클래스
  3. java.time 패키지
    Date와 Calendar 클래스의 단점을 개선한 새로운 클래스들을 제공
    사용이 가장 편리함.
package test13;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Calendar;
import java.util.Date;

public class DateTest {

	public static void main(String[] args) {

		// 날짜와 시간을 다루는 클래스
		// 1. Date 클래스
		Date day = new Date();
		System.out.println("day = " + day);
		System.out.println("--------------------------------------");

		// 날짜를 형식화하는 클래스 : SimpleDateFormat 클래스 사용
		// 날짜 표시 형식 만들기 -> 패턴 만들기

		// 표시 형식(패턴)을 지정하는 객체
		SimpleDateFormat p1 = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("오늘 날짜(년-월-일) => " + p1.format(day));

		SimpleDateFormat p2 = new SimpleDateFormat("h:m");
		System.out.println("현재 시간은(시:분) => " + p2.format(day));

		SimpleDateFormat p3 = new SimpleDateFormat("E");
		System.out.println("현재 요일 => " + p3.format(day));

		SimpleDateFormat p4 = new SimpleDateFormat("yyyy-MM-dd E요일 hh시 mm분 ss초");
		System.out.println("현재 시각 => " + p4.format(day));
		System.out.println("--------------------------------------");

		// 일정부분만 빼내기
		String ex = p4.format(day).toString();
		System.out.println("ex = " + ex);
		System.out.println("--------------------------------------");

		String ex1 = p1.format(day).toString();
		System.out.println("ex1 = " + ex1);
		System.out.println("--------------------------------------");

		// 2. Calendar 클래스
		// Calendar ctime = new Calendar(); 객체 생성 할 수 없음
		Calendar ctime = Calendar.getInstance(); // 싱글톤 패턴으로 지정되어 있음
		System.out.println("ctime = " + ctime);
		System.out.println("--------------------------------------");

		// get()메소드를 이용해서 날짜 출력
		int year = ctime.get(Calendar.YEAR);
		int month = ctime.get(Calendar.MONTH) + 1; // 월은 0월부터 시작함.(+1 해줘야 현재 월)
		int day1 = ctime.get(Calendar.DATE);
		System.out.println(year + "년 " + month + "월 " + day1 + "일 ");
		System.out.println("--------------------------------------");
		// 시간 가져오기
		int hour = ctime.get(Calendar.HOUR);
		int minute = ctime.get(Calendar.MINUTE);
		int second = ctime.get(Calendar.SECOND);
		int second1 = ctime.get(Calendar.MILLISECOND);
		System.out.println("현재 시간은 " + hour + "시 " + minute + "분 " + second + "초 " + second1 + "밀리초");
		System.out.println("--------------------------------------");

		// Date클래스 타입값 -> Calendar 클래스 타입값으로 변경해서 사용
		ctime.setTime(day);
		int yearC = ctime.get(Calendar.YEAR);
		int monthC = ctime.get(Calendar.MONTH) + 1;
		int dayC = ctime.get(Calendar.DATE);
		System.out.println(yearC + "년 " + monthC + "월 " + dayC + "일 ");
		System.out.println("--------------------------------------");

		// 1970년 1월 1일부터 현재까지의 누적된 시간을 출력
		System.out.println(System.currentTimeMillis());
		System.out.println("--------------------------------------");

		// 3. java.time 패키지
		// now() 메소드 : 현재 날짜와 시간을 이용해서 새로운 객체를 생성하여 반환
		// of() 메소드 : 전달한 인수를 가지고 특정 날짜와 시간을 표현하는 새로운 객체를 생성하여 반환
		// parse() 메소드 : 문자열을 날짜(LocalDate) 형식으로 변경

		// 날짜 처리 클래스 : LocalDate 클래스
		LocalDate ld = LocalDate.now();
		LocalDate ofld = LocalDate.of(2024, 1, 31);
		LocalDate pld = LocalDate.parse("2023-10-25");
		System.out.println("ld = " + ld);
		System.out.println("ofld = " + ofld);
		System.out.println("pld = " + pld);
		System.out.println("--------------------------------------");

		// 시간 처리 클래스 : LocalTime 클래스
		LocalTime lt = LocalTime.now();
		LocalTime oflt = LocalTime.of(10, 35, 1);
		LocalTime plt = LocalTime.parse("10:37:03"); //시간은 :(콜론)으로 구분
		System.out.println("lt = " + lt);
		System.out.println("ltof = " + oflt);
		System.out.println("plt = " + plt);
		System.out.println("--------------------------------------");
		
		// 날짜, 시간을 처리하는 클래스 : LocalDateTime
		LocalDateTime ldt = LocalDateTime.now();
		LocalDateTime ofldt = LocalDateTime.of(2024, 4, 30, 17, 50);
		System.out.println("ldt = " + ldt);
		System.out.println("ofldt = " + ofldt);
		System.out.println("--------------------------------------");
		
		//get 접두어가 붙은 메소드는 날짜/시간 정보를 가져오기
		System.out.println(ldt.getYear());
		System.out.println(ldt.getMonth()); 
		System.out.println(ldt.getMonthValue()); //+1 해줄 필요없음(cf, (Calendar.MONTH) + 1 차이가 있음 
		System.out.println(ldt.getDayOfMonth()); 
		System.out.println(ldt.getDayOfWeek()); 
		System.out.println("--------------------------------------");
		
		
	}

}

 

		// 날짜와 시간을 다루는 클래스
		// 1. Date 클래스
		Date day = new Date();
		System.out.println("day = " + day);
		System.out.println("--------------------------------------");

		// 날짜를 형식화하는 클래스 : SimpleDateFormat 클래스 사용
		// 날짜 표시 형식 만들기 -> 패턴 만들기

		// 표시 형식(패턴)을 지정하는 객체
		SimpleDateFormat p1 = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println("오늘 날짜(년-월-일) => " + p1.format(day));

		SimpleDateFormat p2 = new SimpleDateFormat("h:m");
		System.out.println("현재 시간은(시:분) => " + p2.format(day));

		SimpleDateFormat p3 = new SimpleDateFormat("E");
		System.out.println("현재 요일 => " + p3.format(day));

		SimpleDateFormat p4 = new SimpleDateFormat("yyyy-MM-dd E요일 hh시 mm분 ss초");
		System.out.println("현재 시각 => " + p4.format(day));
		System.out.println("--------------------------------------");

		// 일정부분만 빼내기
		String ex = p4.format(day).toString();
		System.out.println("ex = " + ex);
		System.out.println("--------------------------------------");

		String ex1 = p1.format(day).toString();
		System.out.println("ex1 = " + ex1);
		System.out.println("--------------------------------------");

 

		// 2. Calendar 클래스
		// Calendar ctime = new Calendar(); 객체 생성 할 수 없음
		Calendar ctime = Calendar.getInstance(); // 싱글톤 패턴으로 지정되어 있음
		System.out.println("ctime = " + ctime);
		System.out.println("--------------------------------------");

		// get()메소드를 이용해서 날짜 출력
		int year = ctime.get(Calendar.YEAR);
		int month = ctime.get(Calendar.MONTH) + 1; // 월은 0월부터 시작함.(+1 해줘야 현재 월)
		int day1 = ctime.get(Calendar.DATE);
		System.out.println(year + "년 " + month + "월 " + day1 + "일 ");
		System.out.println("--------------------------------------");
		// 시간 가져오기
		int hour = ctime.get(Calendar.HOUR);
		int minute = ctime.get(Calendar.MINUTE);
		int second = ctime.get(Calendar.SECOND);
		int second1 = ctime.get(Calendar.MILLISECOND);
		System.out.println("현재 시간은 " + hour + "시 " + minute + "분 " + second + "초 " + second1 + "밀리초");
		System.out.println("--------------------------------------");

		// Date클래스 타입값 -> Calendar 클래스 타입값으로 변경해서 사용
		ctime.setTime(day);
		int yearC = ctime.get(Calendar.YEAR);
		int monthC = ctime.get(Calendar.MONTH) + 1;
		int dayC = ctime.get(Calendar.DATE);
		System.out.println(yearC + "년 " + monthC + "월 " + dayC + "일 ");
		System.out.println("--------------------------------------");

		// 1970년 1월 1일부터 현재까지의 누적된 시간을 출력
		System.out.println(System.currentTimeMillis());
		System.out.println("--------------------------------------");

 

		// 3. java.time 패키지
		// now() 메소드 : 현재 날짜와 시간을 이용해서 새로운 객체를 생성하여 반환
		// of() 메소드 : 전달한 인수를 가지고 특정 날짜와 시간을 표현하는 새로운 객체를 생성하여 반환
		// parse() 메소드 : 문자열을 날짜(LocalDate) 형식으로 변경

		// 날짜 처리 클래스 : LocalDate 클래스
		LocalDate ld = LocalDate.now();
		LocalDate ofld = LocalDate.of(2024, 1, 31);
		LocalDate pld = LocalDate.parse("2023-10-25");
		System.out.println("ld = " + ld);
		System.out.println("ofld = " + ofld);
		System.out.println("pld = " + pld);
		System.out.println("--------------------------------------");

		// 시간 처리 클래스 : LocalTime 클래스
		LocalTime lt = LocalTime.now();
		LocalTime oflt = LocalTime.of(10, 35, 1);
		LocalTime plt = LocalTime.parse("10:37:03"); //시간은 :(콜론)으로 구분
		System.out.println("lt = " + lt);
		System.out.println("ltof = " + oflt);
		System.out.println("plt = " + plt);
		System.out.println("--------------------------------------");
		
		// 날짜, 시간을 처리하는 클래스 : LocalDateTime
		LocalDateTime ldt = LocalDateTime.now();
		LocalDateTime ofldt = LocalDateTime.of(2024, 4, 30, 17, 50);
		System.out.println("ldt = " + ldt);
		System.out.println("ofldt = " + ofldt);
        System.out.println("--------------------------------------");
		
		//get 접두어가 붙은 메소드는 날짜/시간 정보를 가져오기
		System.out.println(ldt.getYear());
        System.out.println(ldt.getMonth()); 
		System.out.println(ldt.getMonthValue()); //+1 해줄 필요없음(cf, (Calendar.MONTH) + 1 차이가 있음 
		System.out.println(ldt.getDayOfMonth()); 
		System.out.println(ldt.getDayOfWeek()); 
		System.out.println("--------------------------------------");

 

		// ※연산도 가능함
		LocalDate ld1 = ld.minusYears(10).plusMonths(1).plusDays(3);
		System.out.println(ld1);

 

DateTest.java
0.00MB

 

 

728x90

'KDT > Java' 카테고리의 다른 글

240304 Java - 입출력과 스트림 1  (0) 2024.03.04
240131 Java - 자바 입출력  (0) 2024.01.31
241025 Java - 예외 2  (0) 2024.01.25
240124 Java - 예외 1  (0) 2024.01.24
240115 Java  (0) 2024.01.15