마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

timepicker dialog로 시간 두개 입력 받아서 시간 차이 구하는 질문

0 추천

아래 사진처럼 출,퇴근시간 timepicker dialog로 입력받아서(버튼 누르면 timepicker dialog나옵니다.)
작업시간 TextView에 차이 값을 구살수 있을까요?
나름대로 검색을 해보고 있긴한데 도저히 방법을 모르겠네요..ㅜ
코드는 아래와 같습니다.

 public void showStartTimePickerDialog() {
        final int[] backup = new int[startTime.length];
        System.arraycopy(startTime,0,backup,0, startTime.length);
        TimePickerDialog dialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
                startTime[0] = hourOfDay;  
                startTime[1] = minute; 
                btn_start.setText(String.format("출근시간 : %02d : %02d",startTime[0],startTime[1]));
            }
        },starthourOfDay,startMinute,true);

        dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                System.arraycopy(backup,0, startTime,0, startTime.length);
                btn_start.setText(String.format("출근시간 : %02d : %02d",startTime[0],startTime[1]));
            }
        });
        dialog.show();
    }

    public void showEndTimePickerDialog() {
        final int[] backup = new int[endTime.length];
        System.arraycopy(endTime,0,backup,0, endTime.length);
        TimePickerDialog dialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
                endTime[0] = hourOfDay;
                endTime[1] = minute;
                btn_end.setText(String.format("퇴근시간 : %02d : %02d",endTime[0],endTime[1]));
            }
        },endHourOfDay,endMinute,true);
        dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                System.arraycopy(backup,0,endTime,0,endTime.length);
                btn_end.setText(String.format("퇴근시간 : %02d : %02d",endTime[0],endTime[1]));
            }
        });
        dialog.show();
    }

 

익명사용자 님이 2018년 4월 6일 질문
2018년 4월 6일 수정

2개의 답변

0 추천

다음과 같이 하면 되지 않을까요?

int[] workTime = new int[2];

endTotalMinTime   = endTime[0] * 60 + endTime[1];
startTotalMinTime = startTime[0] * 60 + startTime[1];

workTimeMinTime = endTotalMinTime - startTotalMinTime;

workTime[0] = workTimeMinTime / 60;
workTime[1] = workTimeMinTime % 60;

 

디자이너정 (42,810 포인트) 님이 2018년 4월 6일 답변
안녕하세요 질문자 입니다.
알려주신 방법대로 하면 출근 :09:00 퇴근 18:30으로 설정하면
작업시간이 9.5가 아니라 9.3으로 나오더라구요.. 혹시 해결할 방법 있을까요?ㅜ
9.3으로 나오는건 30분이어서 3으로 나오는거 같으니 계산된 '분' 값 (=x)에 3을 나누고 5를 곱하면 되겠네요. (ex : x/3*5)
startTotalMinTime = 540  = 9 * 60 + 00   (09:00)
endTotalMinTime   = 1110 = 18 * 60 + 30  (18:30)

workTimeMinTime = 570 = 1110 - 540;

workTime[0] = 9  = 570 / 60;
workTime[1] = 30 = 570 % 60;

9, 30, 9시 30분 이 나오는데요?

9.5를 구하시려면, 그냥 workTimeMinTime / 60.0f 하시면 됩니다.
/ 60.0f를 하려면 자료형식을 전부 float로 바꿔야 합니다.
혹시 다른 방법 있을까요?
yt0229님이 알려주신 방법으로 성공했습니다 감사합니다!!
0 추천

저라면 출근시간 연월일시를 밀리세컨드로 바꾸고, 퇴근시간도 연월일시를 밀리세컨드로 바꾼 다음에, 퇴근시간 - 출근시간으로 해서 나온 밀리세컨드를 시분으로 바꿀 것 같아요.

long diff = 퇴근시간 millis - 출근시간 millis;
long hour = TimeUnit.MILLISECONDS.toHours(diff);
long minute = TimeUnit.MILLISECONDS.toMinutes(diff - TimeUnit.HOURS.toMillis(hour));

 

쎄미 (162,330 포인트) 님이 2018년 4월 9일 답변
저도 생각해봤는데 그거에 대해서
timepicker dialog로 출근의 시간 따로 분 따로 받고
퇴근의 시간 따로 분 따로 받아서 출근시간 퇴근시간을 만들으려면
시간과 분을 합치는 작업이 있어야 합니다..ㅜㅜ
그거 하다가 멘탈이 붕괴되서..;;
Calendar.set(HOUR_OF_DAY, 시간), Calendar.set(MINUTE, 분) 으로하면 되지 않나요?
오늘 한번 해보겠습니다.
...