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형태로 변환해 준 다음
파라미터로 넘겨주면 알맞은 리턴값이 돌아오게 된다.