글 등록 날짜를 트위터나 페이스북처럼 "~시간 전", "~일 전"으로 나타내기 > 그누보드5 팁자료실

그누보드5 팁자료실

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

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

본문

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

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


<?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;
}
?>


이 함수는 다음과 같이 동작합니다.
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']) ?>
추천
8

댓글 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
와 2014년 글인데 아직도 문제없이 잘 되네요!
사용하는 테마의 head.sub.php에 넣고 쓰면 되고
혹시 x개월 전, x년 전 필요하신분 있으실 분 있으실것같아 그부분도 추가했어요


<?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;
}
?>


그 후에 써놓은대로 원하는 곳에서 출력하면 되네요
- 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']) ?>
전체 2,426 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT