테스트 사이트 - 개발 중인 베타 버전입니다

글 등록 날짜를 트위터나 페이스북처럼 "~시간 전", "~일 전"으로 나타내기

트위터나 페이스북 등의 해외 서비스를 보면 글 등록 날짜를 실제 시간으로 표현하지 않고 "1일 전", "20시간 전" 등등으로 표현하는 경우가 많습니다. 그누보드에서도 날짜를 이런식으로 표현하는 방법입니다.

다음 코드를 head.sub.php에서 <!DOCTYPE html> 위쪽에 붙여넣으세요.

[code]
<?php
// 날짜 계산 함수
function passing_time($datetime) {
$time_lag = time() - strtotime($datetime);

if($time_lag < 60) {
$posting_time = "방금";
} elseif($time_lag >= 60 and $time_lag < 3600) {
$posting_time = floor($time_lag/60)."분 전";
} elseif($time_lag >= 3600 and $time_lag < 86400) {
$posting_time = floor($time_lag/3600)."시간 전";
} elseif($time_lag >= 86400 and $time_lag < 2419200) {
$posting_time = floor($time_lag/86400)."일 전";
} else {
$posting_time = date("y-m-d", strtotime($datetime));
}

return $posting_time;
}
?>
[/code]

이 함수는 다음과 같이 동작합니다.
1. 글을 쓴 지 60초 미만일 경우 - "방금"이라고 표기됩니다.
2. 글을 쓴 지 60초(1분) 이상 3600초(1시간) 미만일 경우 - "X분 전"이라고 표기됩니다.
3. 글을 쓴 지 3600초(1시간) 이상 86400초(1일) 미만일 경우 - "X시간 전"이라고 표기됩니다.
4. 글을 쓴 지 86400초(1일) 이상 2419200초(28일) 미만일 경우 - "X일 전"이라고 표기됩니다.
5. 글을 쓴지 28일 이상일 경우 - "년-월-일"이 표기됩니다.

불러 쓸 때는 다음과 같이 하면 됩니다.

게시판 목록(list.skin.php) :
<?php echo passing_time($list[$i]['wr_datetime']) ?>

게시판 내용 보기(view.skin.php) :
<?php echo passing_time($view['wr_datetime']) ?>

댓글 내용 보기(view_comment.skin.php) :
<?php echo passing_time($list[$i]['datetime']) ?>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 12개

몇 달전
몇 년전

위 두가지도 추가해 주세요^^

그리고 모바일은 안먹는데 방법이 있는지요?
모바일에서 안 될 경우에는 mobile 디렉토리에 있는 head.php에서 HTML 코드 시작되기 전에 붙여넣으시면 됩니다. 애초에 저 코드는 날짜가 출력되는 부분보다 위쪽에 있으면 작동하거든요.

몇 달전과 몇 년전은 일부러 추가를 하지 않았습니다. 달 수의 경우 한달의 길이가 28일부터 31일까지 다양하고(위 소스에서 28일에서 끊는 이유가 그것입니다), 연도의 경우도 윤년 계산이 있기 때문에 상당히 소스가 복잡해집니다.
오오 꿀팁 감사합니다!
Fatal error: Call to undefined function passing_time() in html/skin/board/basic/list.skin.php on line 126

Fatal error: Call to undefined function passing_time() in html/skin/board/basic/view.skin.php on line 27
감사합니다 ^^
자바스크립트 반복문 안에서 사용할 방법은 없나요??
감사합니다 잘 작동되내요
저기서 오차가 있네요 ㅋㅋㅋ 제가 방금전이랑 몇분전 이게 왜 안나온가 했더니~ 문제가 있던거였어용
최신 게시판 같은 new.php 에서는 어떻게 적용해야 하나요?
[http://sir.kr/data/editor/2005/e3080fffe3995b3e95ab1db3cf146bcb_1590294527_6353.png]
좋은 팁 감사합니다.
와 2014년 글인데 아직도 문제없이 잘 되네요!
사용하는 테마의 head.sub.php에 넣고 쓰면 되고
혹시 x개월 전, x년 전 필요하신분 있으실 분 있으실것같아 그부분도 추가했어요

[code]
<?php
// 날짜 계산 함수
function passing_time($datetime) {
$time_lag = time() - strtotime($datetime);

if($time_lag < 60) {
$posting_time = "방금";
} elseif($time_lag >= 60 and $time_lag < 3600) {
$posting_time = floor($time_lag/60)."분 전";
} elseif($time_lag >= 3600 and $time_lag < 86400) {
$posting_time = floor($time_lag/3600)."시간 전";
} elseif($time_lag >= 86400 and $time_lag < 2592000) {
$posting_time = floor($time_lag/86400)."일 전";
} elseif($time_lag >= 2592000 and $time_lag < 31104000) {
$posting_time = floor($time_lag/2592000)."개월 전";
} elseif($time_lag >= 31104000 and $time_lag < 31536000) { //360일~365일 전의 기간에 작성된 게시글이 12개월전으로 표기되지 않게
$posting_time = "1년 전";
} else {
$posting_time = floor($time_lag/31536000)."년 전";
}

return $posting_time;
}
?>
[/code]

그 후에 써놓은대로 원하는 곳에서 출력하면 되네요
- list.skin.php
<?php echo passing_time($list[$i]['wr_datetime']) ?>

-view.skin.php
<?php echo passing_time($view['wr_datetime']) ?>

- view_comment.skin.php
<?php echo passing_time($list[$i]['datetime']) ?>

게시글 목록

번호 제목
1938
1936
1930
1926
1920
1914
1912
1898
1895
1889
1884
1881
1873
1871
1830
1829
1828
1826
1815
1803
1796
1793
1790
1788
1781
1779
1760
1759
1751
1750