개발하는 고양이 오이

8. [Android_Java] CalendarView 미선택 시 오늘날짜로 저장 본문

Android

8. [Android_Java] CalendarView 미선택 시 오늘날짜로 저장

Cucum 2022. 3. 3. 09:32

안녕하세요. 안드로이드스튜디오에서 작업하다보면 CalendarView를 사용 할 때가 종종 있습니다.

 

xml 파일에서의 CalendarView

 

이때 CalendarView에서 선택한 날짜의 값을 받아오려면 아래와 같은 코드를 작성했는데요.

 

CalendarView calendarView;		// -> calendarView는 onCreate에서 findViewById를 이용하여 정의
String selectMeetingDate = "";

calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
  @Override 
  public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { 
      Toast.makeText(MainActivity.this, year + "년 " + (month + 1) + "월 " + dayOfMonth + "일", Toast.LENGTH_SHORT).show(); 
      selectMeetingDate = year + "-" + (month + 1) + "-" + dayOfMonth;
  } 
});

 

CalendarView가 자동으로 오늘날짜에 동그라미로 체크되어있기 때문에 일자를 선택하지 않고 넘어간다면,

즉 오늘 날짜로 나타나게 하고싶다면 위의 코드로만 작성해주면 안됩니다.

 

위의 코드만 작성해준다면, CalendarView가 바뀌었을 때 적용되는 코드이므로, 일자를 선택하지 않고 넘어간다면 빈 값이 넘어가게 되어 기본값인 1900년 1월 1일로 들어가게 됩니다.

 

이때는 SimpleDateFormat과 Calendar, Date를 활용하거나, 자바 8부터 지원하는 LocalDate, LocalTime 등을 써서 가져온 다음 용도에 맞게 가공해서 써야하는데요.

 

저의 경우에는 calendarView에서 선택된 값을 이용하는 부분의 코드에서 아래와 같이 작성해줬습니다.

if (selectMeetingDate.equals("")) {
	selectMeetingDate = getCurrentDate();
}

// 오늘 날짜 구하기
public static String getCurrentDate() {
	Date dateNow = Calendar.getInstance().getTime();
	SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());

	return format.format(dateNow);
}

 

* 오늘 날짜 구하기 / 현재 시간 구하기 / 오늘 요일 구하기 는 이전글에 제가 작성해놓은 코드를 참고했습니다.

 

2022.02.15 - [Android] - 7. [Android_Java] 오늘 날짜 구하기, 오늘 요일 구하기, 현재 시간 구하기

 

7. [Android_Java] 오늘 날짜 구하기, 오늘 요일 구하기, 현재 시간 구하기

안녕하세요. 안드로이드 코드를 작성하면서 오늘 날짜 구하는 방법과 현재 시간 구하는 방법에 대한 코드를 자주 사용하게 되어 제가 나중에라도 참고하고자 적어봅니다. 오늘 날짜 구하기 publi

dhdl-it.tistory.com


전체적인 코드는 다음과 같습니다.

public void showInsertPopup(DateData dateData) {

    calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
            Toast.makeText(MainActivity.this, year + "년 " + (month + 1) + "월 " + dayOfMonth + "일", Toast.LENGTH_SHORT).show();
            selectMeetingDate = year + "-" + (month + 1) + "-" + dayOfMonth;
        }
    });
    
    // 캘린더뷰 선택 후 다음으로 넘어가는 코드
    ll_confirm.setOnClickListener(new View.OnClickListener() {
    	@Override
        public void onClick(View v) {
            if (selectMeetingDate.equals("")) {
                selectMeetingDate = getCurrentDate();
            }
	});
}

// 오늘 날짜 구하기
public static String getCurrentDate() {
	Date dateNow = Calendar.getInstance().getTime();
	SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());

	return format.format(dateNow);
}

 

감사합니다.