본문 바로가기
Android Studio

[Android Studio] 유저에게 날짜 / 시간 정보 입력받기 DatePickerDialog(), TimePickerDialog() + 받아올 때 문자열 가공

by dong_su 2024. 1. 4.

버튼을 클릭하면 DatePickerDialog 객체를 생성 후 실행하는 코드

btnDate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DatePickerDialog dialog = new DatePickerDialog(
                AddActivity.this,
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        // 월은 +1 해줘야 한다. index로 세기 때문
                        month += 1;

                        // 월이나 일은 한자리면 왼쪽에 0 붙여야 한다.
                        String strMonth;
                        if (month < 10){
                            strMonth = "0" + month;
                        } else {
                            strMonth = "" + month;
                        }

                        String strDay;
                        if (dayOfMonth < 10){
                            strDay = "0" + dayOfMonth;
                        } else {
                            strDay = "" + dayOfMonth;
                        }

                        String date = year + "-" + strMonth + "-" + strDay;
                        btnDate.setText(date);
                    }
                },
                Calendar.getInstance().get(Calendar.YEAR), // 시작날짜, 원하는 날짜로 설정 가능
                Calendar.getInstance().get(Calendar.MONTH),
                Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
        );

        dialog.show();
    }
});

Month는 +1 해줘야 한다. index로 세기 때문에 0~11까지만 있기 때문.

 

버튼을 클릭하면 TimePickerDialog객체를 생성 후 실행하는 코드

btnTime.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        TimePickerDialog dialog = new TimePickerDialog(
                AddActivity.this,
                new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                        String strHour;
                        if (hourOfDay < 10){
                            strHour = "0" + hourOfDay;
                        } else {
                            strHour = "" + hourOfDay;
                        }

                        String strMinute;
                        if (minute < 10){
                            strMinute = "0" + minute;
                        } else {
                            strMinute = "" + minute;
                        }

                        String time = strHour + ":" + strMinute;
                        btnTime.setText(time);

                    }
                },
                Calendar.getInstance().get(Calendar.HOUR_OF_DAY),
                Calendar.getInstance().get(Calendar.MINUTE),
                true
        );

        dialog.show();
    }
});

onDateSet(), onTimeSet() 두 함수 모두 10보다 작을 때 1자리로 나오기 때문에 if문으로 두 자리로 만들어줘야 한다.


+ 받아올 때

Memo memo = memoArrayList.get(position);

holder.txtTitle.setText(memo.title);
// 날짜는 ISO 포맷으로 오기 때문에 가공해서 화면에 표시할 것이다.

String date = memo.date.replace("T", " ").substring(0, 16);

holder.txtDate.setText(date);
holder.txtContent.setText(memo.content);