Calendar

단편적인 날짜 정보를 얻을 때.
추상클래스이므로 객체화가 되지 않는다.

문법

1. 객체 생성
객체를 얻는 method 사용
Calendar cal = Calendar.getInstance();

 자식클래스 사용.
Calendar cal2 = new GregorianCalendar();

2. method사용
년,, 일 등의 정보를 get()에 constant를 할당하여 얻는다.

*int year = cal.get(Calendar.YEAR); //가독성향상
int year = cal.get(1);//가독성 좋지 않음.

*int month = cal.get(Calendar.MONTH)+1;//월은 0월부터 시작 0~11월 

*int day = cal.get(Calendar.DAY_OF_MONTH);//오늘 얻기
sb.append(cal.get(Calendar.DAY_OF_MONTH)).append("일");//한줄로 작성가능

* 오늘이 올해의 몆번째 날인지 구하기
cal.get(Calendar.DAY_OF_YEAR)
* 요일
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

* 오전/오후
int amPm = cal.get(Calendar.AM_PM); //오전 - 0, 오후 - 1

*int hour =cal.get( Calendar.HOUR);// 12시간
int hour =cal.get( Calendar.HOUR_OF_DAY);// 24시간

*int minute = cal.get( Calendar.MINUTE );

*int second=cal.get( Calendar.SECOND );
  • 특정 날짜로 변경
1. 생성
Calendar cal = Calendar.getInstance();

2. 특정 날짜정보를 변경 - 설정한 날짜정보만 변경, 다른 정보는 그대로.
cal.set(필드, 변경할 값);

* 년
cal.set(Calendar.YEAR, 2025);//2025-01-22

*(사람이 사용하는 월보다 -1 설정) //1을 입력하면 2월이 나옴.
cal.set(Calendar.MONTH, 1); //2025-02-22

*(현재 월에 없는 일이 설정되면 다음달 1일로 출력한다.)
cal.set(Calendar.DAY_OF_MONTH, 30); //2025-02-30 => 2025-03-01

java.time 패키지

  • LocalDate(날짜 정보만 가진 클래스),
  • LocalTime(시간 정보만 가진 클래스),
  • LocalDateTime(날짜와 시간을 모두 가진 클래스),
  • Period(두 날짜 간의 연산 클래스),
  • Duration(두 시간 사이의 연산을 하기 위한 클래스)

문법

1. 객체 생성을 직접할 수 없다.
* now() - static method(시스템 현재 시간)

 LocalDate ld = LocalDate.now();
LocalTime lt = LocalTime.now();
LocalDateTime ldt = LocalDateTime.now();

* of() - static method(개발자가 원하는 시간으로 객체 얻을 수 있다.)

 LocalDate ld = LocalDate.of(,,);
 LocalTime lt = LocalTime.of(,,);
 LocalDateTime ldt = LocalDateTime.of(,,,,,);

 LocalDateTime ldt = LocalDateTime.of(LocalDate, LocalTime);

---------------------------------------------------------------

2. method 호출
LocalDate(시간관련 method 제공안함)

-int year = ld.getYear();

-(1~12)
int month = ld.getMonthValue();

-int dayOfMonth = ld.getDayOfMonth();

- 요일
반환형 : Enumeration
ld.getDayOfWeek() - 요일
ld.getDayOfWeek().getValue(); - enum이 가진 상수의 요일 숫자 
(getValue()enum에서 제공하는 method)
  • LocalTime(날짜관련 method 제공안함)
 -int hour = lt.getHour();//24

 -int minute = lt.getMinute();//24

 -int second = lt.getSecond();//24

한글로 출력

  • java.time.format.DateTimeFormetter 클래스를 사용
  • letter은 java.text.SimpleDateFormat과 같음.

문법

 1. 생성) - 안됨
 객체를 얻는 ofPattern method 사용.
 
 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("패턴", Locale);
 
 2. LocalDate객체나 LocalDateTime객체의 method를 호출
 
 String dateFormat = ld.format(dtf);
 (패턴이 설정된 날짜가 문자열로 반환.)

날짜 변환

method를 호출하여 변환할 날짜를 설정하고, 자신 객체에 재할당하여 사용.
widthXxxx(), plusXxx(), minusXxx()
 
- 년 변경
ld = ld.withYear((현재 년도에서) 변경할 년도);
ld = ld.plusYear(더할 년도);
ld = ld.minusYear(뺄 년도);

날짜 비교

isAfter, isBefore, isEqual
### 문법

LocalDate ld = LocalDate.now();//2024,1,22 전날
LocalDate ld2 = LocalDate.of(2024,1,23); //이후

// 현재날짜.isAfter( 비교할 날짜 );
ld.isAfter(ld2); //ld날이 ld2보다 다음날인가 : false
ld.isBefore(ld2); //ld날이 ld2보다 전날인가 : true 
ld.isEqual(ld2); //ld날이 ld2과 같은 날인가 : false

날짜 간의 차이 연산

period 클래스 사용.
LocalDate를 사용한 날짜 비교 가능.

문법

1. 날짜를 가진 객체얻기
LocalDate ld = LocalDate.of(2023,12,22);
LocalDate ld2 = LocalDate.of(2024,1,22);

2. 날짜 연산을 위한 객체얻기
period p = Period.between(ld, ld2);

3. 각 날짜별 차이 얻기(각 날짜 끼리만 연산, 전체(,,)을 연산하지 않음.)
* 년도 차
p.getYears()
System.out.println(ld.getYear() + "년과 " + ld2.getYear() + 
"년의 차 : " + p.getYears() + "년");

* 월 차
p.getMonths();

* 일 차
p.getDays();

decimalFormat

숫자를 형식을 가진 문자열로 만들어 보여줄 때.

문법

1. 생성
DecimalFormat df = new DecimalFormat( pattern );
(pattern => 
0 : 해당자리에 데이터가 없으면 0을 채워서 출력.
\# : 데이터가 존재하는 것 까지만 출력.)

2. method 출력
String value = df.format(숫자);

DecimalFormat df = new DecimalFormat( "0,000,000" )
System.out.println( df.format( 2024 ) ); //0,002,024

DecimalFormat df = new DecimalFormat( "#,###,###" )
System.out.println( df.format( 2024 ) ); //2,024

DecimalFormat df = new DecimalFormat( "0,000,000.00" )
System.out.println( df.format( 2024.1234 ) ); //0,002,024.12

random

난수를 추출할 목적으로 만들어진 클래스

문법

1. 객체화 - 난수의 셋이 만들어짐
Random r = new Random();
Random r = new Random(seed);

2. method 호출
정수의 난수 얻기
r.nextInt(); // -2147483648 ~ +2147483648 사이의 값이 나옴
Math.abs(r.nextInt() % 범위)
r.nextInt(범위)

실수의 난수 얻기
r.nextFloat()
r.nextDouble()

범위
(int)(r.nextDouble() * 범위)

* 불린 난수
r.nextBoolean();

enum(Enumeration)

열거형
한정된 개수의 값들을 하나로 묶어서 사용할 때.
변형된 클래스의 일종(클래스의 성격을 가짐)
(변수를 가짐, 생성자-private한정(method를 가질 수 있다.))

1. 선언
접근지정자 enum 이넘명{,,,,, <= 상수이므로 대문자로 기술
}

1) 모든 값 출력
values() method 사용
(enum 객체안의 모든 상수가 열거형으로 나온다.)
for(이넘명 객체명 : 이넘명.values()){
}

2) 특징 요소 하나 얻을 때
이넘명.요소명

3) 요소가 몇번째 값인지 얻을 때
ordinal()
이넘명.요소명.ordinal()

public enum Test{
	A, B, C, D
}

4) 모든 값 얻기
for(Test t : Test.values()){
	System.out.println(t);
}

5) 요소하나 출력
System.out.println(Test.A);

6) 번호 얻기
System.out.println(Test.A.ordinal());

enum 생성자와 method정의

enum의 요소에 이름과 별개의 값을 설정할 수 있음.
enum 생성자(private)

접근지정자 enum 이넘명 {
상수값("이름",),
상수값("이름",),
상수값("이름",);
	//이름 저장용 변수
    //값 저장용 변수
    private final String name;
    private final int value;
    
    private 이넘명(String name, int value){
    this.name = name;
        this.value = value;
    }//이넘명
    
    public String getName(){
    	return this.name;
    }//getName
    
    public String getValue(){
    	return this.value;
    }//getValue
}

문법

이넘명 객체명 = 이넘명.요소;
객체명.getName();
객체명.getAge();

0개의 댓글