게시판 글 구현시 date와 시간 관련 질문입니다.

    SimpleDateFormat qqqq = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    SimpleDateFormat zxcv = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    zxcv.setTimeZone(TimeZone.getTimeZone("UTC"));
    final Date zz = new Date();
    try {
        Date xxx = zxcv.parse("2016-10-31T08:25:24.000Z");
        String vvvv = qqqq.format(xxx);

        long subtract = zz.getTime() - xxx.getTime(); // 밀리세컨드 값으로 나옴
        month = (subtract/1000/60/60/24/30);
        day = (subtract/1000/60/60/24);
        hour = (subtract/1000/60/60);
        minute = (subtract/1000/60);

    } catch (ParseException e) {
        e.printStackTrace();
    }

이렇게 해봤는데 subtract 값이 밀리세컨드로 해서 나와서 long month, day, hour, minute을 저렇게 구현했습니다. 그런데 subtract의 값(시간 차이)이 클수록 minute은 60분을 hour는 24시간을 이런식으로 초과하게 되어있는데 분이 60분을 넘어가면 hour로 자동으로 되게하기 위해서는 어떻게 해야 하나요?

1답변

  • 좋아요

    1

    싫어요
    채택취소하기

    아래 코드로 한번 테스트 해보세요.

    public void printDifference(Date startDate, Date endDate) {
        //milliseconds
        long different = endDate.getTime() - startDate.getTime();
    
        System.out.println("startDate : " + startDate);
        System.out.println("endDate : "+ endDate);
        System.out.println("different : " + different);
    
        long secondsInMilli = 1000;
        long minutesInMilli = secondsInMilli * 60;
        long hoursInMilli = minutesInMilli * 60;
        long daysInMilli = hoursInMilli * 24;
    
        long elapsedDays = different / daysInMilli;
        different = different % daysInMilli;
    
        long elapsedHours = different / hoursInMilli;
        different = different % hoursInMilli;
    
        long elapsedMinutes = different / minutesInMilli;
        different = different % minutesInMilli;
    
        long elapsedSeconds = different / secondsInMilli;
    
        System.out.printf(
            "%d days, %d hours, %d minutes, %d seconds%n", 
            elapsedDays,
            elapsedHours, elapsedMinutes, elapsedSeconds);
    }
    

    출처

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.