728x90
반응형
SMALL
날짜객체를 3가지를 쓰다보니깐 결국 이슈가 터졌다....
Calendar에서는
1주를 일~토: 1~7 로 판단한다.
월(Month)을 1월~12월: 0~11로 판단한다.
Date는
1주를 일~토: 0~6 으로 판단한다.
월(Month)을 1월~12월: 0~11로 판단한다.
LocalDate는
1주를 월~일: 1~7 로 판단한다
월(Month)을 1월~12월: 1~12로 판단한다.
Calendar 와 Date 는 외부에서 날짜 변경이 가능하므로 멀티쓰레드 환경에서 위험하다고 한다.
또한 날짜에서 0이라는 의미가 매우 개발시에 혼동을 주곤한다.(나도 많이 느꼈다...)
현재 두 날짜 객체 모두 Deprecated 되어있다.
LocalDate는 불변객체로서 주로 해당 객체를 통한 날짜계산을 권장하고 있다.
*두 날짜 사이의 평일 구하기
package hi;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Period;
import java.time.temporal.ChronoUnit;
public class testDate {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2021, 12, 01);
LocalDate end = LocalDate.of(2021, 12, 15);
LocalDate temp = start;
long result1 = ChronoUnit.DAYS.between(start,end); // 14
Period change = Period.between(start, end);
int result2 = change.getDays(); //14
long result3 = start.until(end, ChronoUnit.DAYS);//14
System.out.println("날짜 사이 값은?==========");
System.out.println("결과1: "+result1);
System.out.println("결과2: "+result2);
System.out.println("결과3: "+result3);
int countHoliday = 0;
for (int i = 0; i <= result2; i++) {
DayOfWeek day = temp.getDayOfWeek();
//System.out.println(day);
int number = day.getValue();
if(number !=6 && number !=7){countHoliday++;}
temp = temp.plusDays(1);
}
System.out.println(countHoliday);
}
}
728x90
반응형
LIST
'Language > 자바' 카테고리의 다른 글
[자바]22. Stream 정리 (0) | 2022.01.05 |
---|---|
[자바] 21. 동일성(==), 동등성(equals)에 관해서 (0) | 2022.01.04 |
[자바]19. public static void main(String[] args) 의 이유? (0) | 2021.12.09 |
[자바]18. JMS 기초 with Message Queue (0) | 2021.12.03 |
[자바]17. Message Queue의 구조 (0) | 2021.12.01 |