코딩/2-JAVA

C23날짜

tree0505 2025. 7. 22. 09:47
반응형
  • C23날짜
    • C2301날짜_개념

  • 날짜_기본이론1
package C2301날짜_개념;

import java.text.SimpleDateFormat;
import java.util.Date;

public class 날짜_기본이론1 {
	public static void main(String[] args) {
		
		// 현재 컴퓨터 시스템의 날짜와 시간을 얻어온다.
		Date date = new Date();
		System.out.println(date);	// Thu Sep 28 22:55:06 KST 2023
		
		/*
		 * 	[1] 날짜 및 시간 출력 서식 지정 방법
		 *  	. 날짜 및 시간 서식에 사용되는 영문자를 제외한 나머지 문자는 입력하는 그대로 출력된다.
		 *  	. Date date = new Date();
		 *  	. SimpleDateFormat sdf = new SimpleDateFormat("날짜 및 시간 서식");
		 *  [2] 날짜 및 시간 서식 적용 방법
		 *  	. sdf.format(date);
		 *  [3] 날짜 및 시작 출력 서식 문자의 종류
		 *  	. 구글에서 "simpledateformat 날짜 형식" 라고 검색하기
		 */
		
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 a hh시 mm분 ss초");
		System.out.println(sdf1.format(date));
		
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd(E) HH:mm");
		System.out.println(sdf2.format(date));
		
		/*
		 * System.currentTimeMillis()
		 * . 1970년 1월 1일 자정 부터 이 메소드가 실행되는 순간까지 지나온 시간을 밀리초(1/1000초) 단위로 얻어온다.
		 * . 13자리의 숫자를 얻어오기 때문에 int로 처리하면 에러가 발생되므로 long로 처리해야 한다.
		 */

		// int time = System.currentTimeMillis();		// 에러 발생
		long time = System.currentTimeMillis();
		System.out.println(time);
		System.out.println(sdf2.format(time));


	}

}

  • 날짜_기본이론2_싱글톤패턴
    • 디자인패턴 
    • 싱글톤패턴 
      • 클래스를 한개만 만드는 방법 
      • 1. 생성자를 잠근다. new를 못함 private 막음 
      • 2. static을 써서 클래스 내부에서 new를 한다. private으로 막음 
      • 3. get함수만 public으로 만들어서 가져다가 쓸 수 있게 한다. 
      • set을 안 만들어서 new가 안됨 
package C2301날짜_개념;

class MySingleTonDAO {
	
	// 1. 생성자를 private 잠근다.
	private MySingleTonDAO() {}
	
	// 2. 내부에서 new를 통해 객체를 생성한다.
	private static MySingleTonDAO instance = new MySingleTonDAO();
	
	// 3. instance변수에 접근할 수 있는 메서드를 생성한다.
	public static MySingleTonDAO getInstance() { return MySingleTonDAO.instance; }
}

public class 날짜_기본이론2_싱글톤패턴 {
	// 싱글톤 패턴이란 
	// 과거 DAO 클래스들이 static 을 이용해 편리하게 사용했으나
	// 모든 변수와 함수에 static 을 붙여야만했다. 
	// class 자체에 static 을 붙이면 좋겠지만
	// class 에는 static 을 붙일수없기때문에 (문법적으로)
	// 그와 유사한 형태로 마치 class 에 붙인거와 같은 효과가 난다. 
	
	// ===  만드는법 ===
	// 1) 생성자를 private 으로 만든다 . 그러면 new 를 할 수 없다. 
	// 2) 내부에서 new 를 한다. static 필요
	// 3) public 을 get함수에만 적용한다. static 필요
	public static void main(String[] args) {
	
		// MySingleTonDAO dao = new MySingleTonDAO();		// 오류발생
		
		MySingleTonDAO d1 = MySingleTonDAO.getInstance();
		MySingleTonDAO d2 = MySingleTonDAO.getInstance();
		MySingleTonDAO d3 = MySingleTonDAO.getInstance();
		System.out.println(d1);
		System.out.println(d2);
		System.out.println(d3);
		
		
	}
}

  • 날짜_기본이론2_싱글톤패턴2
package C2301날짜_개념;

class Member {}
class MemberDAO {
	static public MemberDAO instance = new MemberDAO();
	public void insert() {}
	public void delete() {}
}

class User {}
class UserDAO {
	// 1. new 를 못하게 private 으로 생성자 설정한다. 
	private UserDAO() {}
	// 2. private 으로 클래스내부에서 new 를 한다. 
	private static UserDAO instance = new UserDAO(); 
	// 3. set은 만들지않는다. 오로지get만 만들어서 접근만할수있게한다. 
	public static UserDAO getInstance() { 			 
		return UserDAO.instance;
	}
	public void insert() {}
}

public class 날짜_기본이론2_싱글톤패턴2 {
	public static void main(String[] args) {
		
		MemberDAO.instance.delete();	
		MemberDAO.instance = new MemberDAO(); // 이런문제점이 있다. 
		
		// 싱글턴 만드는법 
		// UserDAO user = new UserDAO(); 
		UserDAO.getInstance().insert();
	}
}

  • 날짜_기본이론3_칼렌더
package C2301날짜_개념;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class 날짜_기본이론3_칼렌더 {
	/*
	 * # Date 클래스의 활용
	 * . Date 클래스 객체에서 년, 월, 일, 시, 분, 초를 얻어오려면
	 * . get으로 시작하는 메소드를 사용한다.
	 * . Date 클래스는 1900년을 기준으로 날짜를 처리한다.
	 */

	public static void main(String[] args) {
		
		Date date = new Date();		
		// 작대기가 그어진함수는 곧 사용금지될 함수들이다. date를 사용하지말고
		// Calendar 클래스 사용을 권한다. 
		System.out.println("년 : " + (date.getYear() + 1900));
		System.out.println("월 : " + (date.getMonth() + 1));
		System.out.println("일 : " + date.getDate());
		
		System.out.println("요일 : "+ date.getDay());			
		// 일요일(0), 월요일(1), ..., 토요일(6)
		
		System.out.println("시 : " + date.getHours());
		System.out.println("분 : " + date.getMinutes());
		System.out.println("초 : " + date.getSeconds());
		/*
		 * Calendar 클래스는 singleton 패턴으로 설계된 클래스이므로 객체를 만들어 사용할 수 없다.
		 * 객체를 만들어 사용할 수 없는 클래스는 클래스 내부에 자신의 클래스로 만든 객체를 가지고 있고
		 * 내부에 가지고 있는 클래스 객체를 얻어오는 메소드를 실행해서 사용한다.
		 */
		System.out.println("-----------------------------");
		// Calendar calendar = new Calendar();		// new를 사용해서 객체를 생성할 수 없다.
		Calendar calendar = Calendar.getInstance();	// getInstance() : 클래스 내부에서 선언된 자신의 클래스 객체를 얻어온다.
		System.out.println(calendar);
		
		/*
		 * Calendar 클래스 객체는 날짜 및 시간 정보 이외의 더 많은 정보를 가지고 있으므로 
		 * SimpleDateFormat 클래스 객체를 이용해 서식을 지정하려면 
		 * getTime() 메소드로 날짜와 시간만 얻어온 후 적용시켜야 한다.
		*/
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd(E) HH:mm:ss");
		System.out.println(sdf.format(calendar.getTime()));
		
		System.out.println(Calendar.YEAR);
		System.out.println("년 : " + calendar.get(Calendar.YEAR));
		System.out.println("월 : " + (calendar.get(Calendar.MONTH) + 1));
		System.out.println("일 : " + calendar.get(Calendar.DAY_OF_MONTH));
		System.out.println("일 : " + calendar.get(Calendar.DATE));
		
		// 일요일(1), 월요일(2), ..., 토요일(7)
		System.out.println("요일 : " + calendar.get(Calendar.DAY_OF_WEEK));	
		
		System.out.println("시 : " + calendar.get(Calendar.HOUR));				// 12시각
		System.out.println("시 : " + calendar.get(Calendar.HOUR_OF_DAY));		// 24시각
		System.out.println("분 : " + calendar.get(Calendar.MINUTE));
		System.out.println("초 : " + calendar.get(Calendar.SECOND));

	}
}
반응형

'코딩 > 2-JAVA' 카테고리의 다른 글

C25제네릭  (1) 2025.07.22
C21콜렉션응용  (4) 2025.07.18
C20인터페이스  (1) 2025.07.18
C19추상화  (1) 2025.07.17
C18상속  (2) 2025.07.17