본문 바로가기
안드로이드

[Android] Java Convert Date

by Banlim 2020. 10. 15.

[나중에 쓰려고 기록]

 

Android Application 구현 과정에서 DB에서 날짜를 받아오면, 이를 오늘 이 시간으로부터 '~전'으로 표현해야 했다.

(예를 들어, ~분 전, ~시간 전, ~달 전 등)

대부분 검색 결과가 오늘로부터 ~일 전의 날짜를 알고싶을 때의 경우들이었다.

따라서 Java 날짜 계산하는 여러 링크를 참조하여 다음과 같은 클래스를 구현하였다.

 

ConvertDate.java

public class ConvertDate {
    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

    public String convertDate(String prevStrDate){
        long diffInSeconds;
        try {
            Date prevDate = format.parse(prevStrDate);
            Date nowDate = new Date(System.currentTimeMillis());
            diffInSeconds = Math.abs(nowDate.getTime() - prevDate.getTime()) / 1000;
            long diffInDays = TimeUnit.DAYS.convert(diffInSeconds, TimeUnit.SECONDS);
            int diffInMonths;
            if (diffInDays > 0) {
                switch ((int) (diffInDays / 7)){
                    case 0:
                        return diffInDays + "일 전";
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                        return (diffInDays/7) + "주 전";
                    default:
                        diffInMonths = (int)diffInDays/30;
                        String result = diffInMonths > 12 ? (diffInMonths/12) + "년 전" : diffInMonths + "달 전";
                        return result;
                }
            }else{
                if(diffInSeconds/60 == 0){
                    return diffInSeconds + "초 전";
                }
                else{
                    long diffInMinutes = diffInSeconds/60;
                    String result = diffInMinutes < 60 ? diffInMinutes + "분 전" : (diffInMinutes/60) + "시간 전";
                    return result;
                }
            }
        } catch (ParseException e) {
            e.printStackTrace();
            return "error";
        }
    }
}

 

해당 클래스는 다음과 같이 사용할 수 있다.

prevDate = "2020-10-12T15:26:47";
ConvertDate mConvertDate = new ConvertDate();
String resultConvertDate = mConvertDate.convertDate(prevDate);