javaFx/달력

javaFx 예약시스템 날짜표시해주기!(3) with 요일에 맞추기

디비드킴 2021. 8. 11. 15:51

그사이에 많은 일이 있었다

요일이 추가된 파일을 받아서 

날짜를 출력했는데 보니 맞지 않았다...

그래서 다시 찾다 

 

reservationService

reservationService.java

현재 날을 구한다

LocalDate today=LocalDate.now().plusMonths(plusMonth);

날에 맞는 월의 마지막 날을 구한다

YearMonth yearMonth=YearMonth.from(today);
int lastDay=yearMonth.lengthOfMonth();

월의 첫 시작일을 구한다 

LocalDate date = LocalDate.of(today.getYear(),today.getMonthValue(),1);
DayOfWeek dayOfWeek = date.getDayOfWeek();

시작 칸 아이디를 위해 변수에 담아준다

start=dayOfWeek.getValue();

미뤄진 만큼 마지막 날+미뤄 진일수를 해준다

int endDayIdOfMonth=lastDay+start;

시작일 전 버튼들 disable+x표시

for(int i=1;i<start;i++) {
Button button=(Button) reservationForm.lookup("#day"+i);
button.setText("x");
button.setDisable(true);
}

시작일부터 날짜 표시 시작

for(int i=start;i<endDayIdOfMonth;i++) {
Button button=(Button) reservationForm.lookup("#day"+i);
button.setText(Integer.toString(temp));
if(checkFullDay(stringToTimestamp(today.getMonthValue()+"",temp))||compareDate(stringToTimestamp(today.getMonthValue()+"", temp),LocalDateTime.now())) {
System.out.println(i+"일은 예약이 다 찼거나 지난 요일입니다");
button.setDisable(true);
}
temp+=1;
}

뒤에 남은 버튼들 disable+x

if(endDayIdOfMonth<lastDayIdNumber) {
for(int i=endDayIdOfMonth;i<=lastDayIdNumber;i++) {
Button button=(Button) reservationForm.lookup("#day"+i);
button.setText("x");
button.setDisable(true);
}
}

 

checkFullDay(stringToTimestamp(today.getMonthValue()+"",temp))||compareDate(stringToTimestamp(today.getMonthValue()+"", temp),LocalDateTime.now())

이런 검증 함수는 뒤에서 설명했으니 패스!

 

테스트

 

 

어이쿠 하나가 푸른색인데 나중에 고쳐주자

 

날짜에만 집착해서 요일을 생각 못했었다

요일이 들어오고 나니 큰일 났다.. 이 생각만 했었지만

정신 차리고 생각대로 다시 차근차근했더니 

성공했다 ㅠㅠㅠ 

기분이 너무 좋다