Android

안드로이드] 몇 분 전, 몇 시간 전, 몇 달 전 등 나타내기

젊은쎄오 2013. 5. 6. 23:55

sns에서 자주보이는 현재 보여지는 글이 쓰여진 시점부터 


지금까지의 시간을 표현하는 방법이다. 


출처는 http://gubok.tistory.com/227 여기이고 아래는 소스이다. 



private static class TIME_MAXIMUM{
        public static final int SEC = 60;
        public static final int MIN = 60;
        public static final int HOUR = 24;
        public static final int DAY = 30;
        public static final int MONTH = 12;
}


public static String formatTimeString(Date tempDate) {

	long curTime = System.currentTimeMillis();
	long regTime = tempDate.getTime();
	long diffTime = (curTime - regTime) / 1000;

	String msg = null;
	if (diffTime < TIME_MAXIMUM.SEC) {
			// sec
		msg = "방금 전";
	} else if ((diffTime /= TIME_MAXIMUM.SEC) < TIME_MAXIMUM.MIN) {
		// min
		msg = diffTime + "분 전";
	} else if ((diffTime /= TIME_MAXIMUM.MIN) < TIME_MAXIMUM.HOUR) {
		// hour
		msg = (diffTime) + "시간 전";
	} else if ((diffTime /= TIME_MAXIMUM.HOUR) < TIME_MAXIMUM.DAY) {
		// day
			msg = (diffTime) + "일 전";
	} else if ((diffTime /= TIME_MAXIMUM.DAY) < TIME_MAXIMUM.MONTH) {
		// day
	        msg = (diffTime) + "달 전";
	} else {
		msg = (diffTime) + "년 전";
	}

	return msg;
}



이 부분만 있으면 구현 가능하다. 


그러나 나는 날짜가 yyyy-mm-dd hh:mm:ss format의 String형식으로  


넘어오고 있었기 때문에 이 String을 위와 같은 format의 Date 변수로 변환하는 부분이 필요했다.


String stringDate = "2013-05-06 14:42:00";
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss");
java.util.Date date = format.parse(stringDate);


위와 같이 format 형태를 상황에 맞게 만들어 date형태로 변환해 준 다음 


파라미터로 넘겨주면 알맞은 리턴값이 돌아오게 된다.