트위터나 페이스북을 보면 날짜 시간이 아니라
1분 전, 1시간 전 이런 표시가 되어 있는데
소스 구현해봤습니다.
UTF-8, PHP 최신버전에서 활용하세요~
파일도 첨부합니다.
[code]
<?php
include './TextDate.php';
$now = new DateTime;
$textData = new TextDate();
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
echo $textData->print_(new DateTime("now")), "<br>\n";
echo $textData->print_(new DateTime("-1 day")), "<br>\n";
echo $textData->print_(new DateTime("-1 week")), "<br>\n";
echo $textData->print_(new DateTime("-1 week -20 days")), "<br>\n";
?>
</body>
</html>
[/code]
[code]
<?php
/**
* 날짜 문자
*
* 1분 전, 1시간 전, 1일 전 표시
*
* @author onhae
* @copyright onhae
* @license GPL
* @link http://www.onhae.com
* @since Version 1.0
*/
class TextDate {
/**
* 현재 날짜
* @var DateTime
*/
protected $now = null;
/**
* 비교 날짜
* @var DateTime
*/
protected $datetime = null;
/**
* 이전 표시 문자
* @var string
*/
protected $agoText = '약 %s 전';
/**
* 현재 표시 문자
* @var string
*/
protected $nowText = '현재';
/**
* 기본 형식
* @var string
*/
protected $defaultFormat = 'Y-m-d H:i:s';
/**
* 형식 배열 array('y' => '년', 'm' => '월', 'd' => '일', 'h' => '시간', 'i' => '분', 's' => '초')
* @var array
*/
protected $formatArray = array('y' => '년', 'm' => '개월', 'd' => '일', 'h' => '시간', 'i' => '분', 's' => '초');
/**
* 생성자
* @param DateTime $now 현재 날짜
* @param DateTime $datetime 비교 날짜
*/
public function __construct(DateTime $now = null, DateTime $datetime = null) {
if ($now === null) {
$this->now = new DateTime;
}
if ($datetime === null) {
$this->datetime = new DateTime;
}
}
/**
* 현재 날짜 설정
* @param DateTime $now
*/
function setNow(DateTime $now) {
$this->now = $now;
}
/**
* 비교 날짜 설정
* @param DateTime $datetime
*/
function setDatetime(DateTime $datetime) {
$this->datetime = $datetime;
}
/**
* 이전 표시 문자 설정
* @param string $agoText
*/
function setAgoText($agoText) {
$this->agoText = $agoText;
}
/**
* 현재 표시 문자
* @param string $nowText
*/
function setNowText($nowText) {
$this->nowText = $nowText;
}
/**
* 기본 형식 설정
* @param string $defaultFormat
*/
function setDefaultFormat($defaultFormat) {
$this->defaultFormat = $defaultFormat;
}
/**
* 형식 배열 설정 array('y' => '년', 'm' => '월', 'd' => '일', 'h' => '시간', 'i' => '분', 's' => '초')
* @param array $formatArray
*/
function setFormatArray(array $formatArray) {
$this->formatArray = $formatArray;
}
/**
* 출력
* @param DateTime $datetime 비교 할 날짜
* @return type
*/
public function print_(DateTime $datetime = null) {
if ($datetime === null) {
$datetime = $this->datetime;
}
/* @var $diff DateInterval */
$diff = $this->now->diff($datetime);
foreach ($this->formatArray as $key => $text) {
if ($diff->{$key} === 0) {
continue;
}
$result = $diff->{$key} . $text;
if ($diff->invert === 1) {
$result = sprintf($this->agoText, $result);
}
break;
}
if (isset($result) === false && $datetime->getTimestamp() === $this->now->getTimestamp()) {
$result = $this->nowText;
} elseif (isset($result) === false) {
$result = $datetime->format($this->defaultFormat);
}
return $result;
}
}
[/code]
소스가 잘 안 보이는 거 같아요...
첨부파일 다운받으세요..
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 130 | 20년 전 | 3968 | ||
| 129 | 20년 전 | 2908 | ||
| 128 | 20년 전 | 3635 | ||
| 127 | 20년 전 | 3433 | ||
| 126 | 20년 전 | 3724 | ||
| 125 | 20년 전 | 8559 | ||
| 124 | 20년 전 | 2584 | ||
| 123 | 20년 전 | 3735 | ||
| 122 | 20년 전 | 3191 | ||
| 121 | 20년 전 | 2589 | ||
| 120 | 20년 전 | 2650 | ||
| 119 | 20년 전 | 2563 | ||
| 118 | 20년 전 | 2850 | ||
| 117 |
|
20년 전 | 3031 | |
| 116 | 20년 전 | 5289 | ||
| 115 | 20년 전 | 3891 | ||
| 114 | 20년 전 | 4942 | ||
| 113 | 20년 전 | 6195 | ||
| 112 | 20년 전 | 7317 | ||
| 111 | 20년 전 | 18419 | ||
| 110 | 20년 전 | 6868 | ||
| 109 | 20년 전 | 2866 | ||
| 108 | 20년 전 | 4125 | ||
| 107 |
prosper
|
20년 전 | 2468 | |
| 106 |
prosper
|
20년 전 | 4294 | |
| 105 |
아우겐나이스
|
20년 전 | 2890 | |
| 104 | 20년 전 | 2246 | ||
| 103 | 20년 전 | 2463 | ||
| 102 | 20년 전 | 2217 | ||
| 101 | 20년 전 | 2549 | ||
| 100 | 20년 전 | 1727 | ||
| 99 | 20년 전 | 1556 | ||
| 98 | 20년 전 | 1606 | ||
| 97 | 20년 전 | 2104 | ||
| 96 | 20년 전 | 1862 | ||
| 95 | 20년 전 | 2355 | ||
| 94 | 20년 전 | 3548 | ||
| 93 | 20년 전 | 1545 | ||
| 92 | 20년 전 | 1739 | ||
| 91 | 20년 전 | 3154 | ||
| 90 | 20년 전 | 2331 | ||
| 89 | 20년 전 | 3156 | ||
| 88 | 20년 전 | 2858 | ||
| 87 | 20년 전 | 3284 | ||
| 86 | 20년 전 | 5103 | ||
| 85 | 20년 전 | 2506 | ||
| 84 | 20년 전 | 4803 | ||
| 83 | 20년 전 | 2482 | ||
| 82 | 20년 전 | 3097 | ||
| 81 | 20년 전 | 7602 | ||
| 80 | 20년 전 | 3805 | ||
| 79 | 20년 전 | 3195 | ||
| 78 | 20년 전 | 4679 | ||
| 77 | 20년 전 | 2882 | ||
| 76 | 20년 전 | 6204 | ||
| 75 | 20년 전 | 4462 | ||
| 74 | 20년 전 | 5769 | ||
| 73 | 20년 전 | 3615 | ||
| 72 | 20년 전 | 5950 | ||
| 71 | 20년 전 | 3094 | ||
| 70 | 20년 전 | 2823 | ||
| 69 | 20년 전 | 2619 | ||
| 68 | 20년 전 | 2427 | ||
| 67 | 20년 전 | 2638 | ||
| 66 | 20년 전 | 2659 | ||
| 65 | 20년 전 | 3777 | ||
| 64 | 20년 전 | 2805 | ||
| 63 | 20년 전 | 2443 | ||
| 62 | 20년 전 | 2246 | ||
| 61 | 20년 전 | 3047 | ||
| 60 | 20년 전 | 3120 | ||
| 59 | 20년 전 | 2493 | ||
| 58 | 20년 전 | 2580 | ||
| 57 | 20년 전 | 2952 | ||
| 56 | 20년 전 | 2300 | ||
| 55 | 20년 전 | 2738 | ||
| 54 | 20년 전 | 2111 | ||
| 53 | 20년 전 | 2335 | ||
| 52 | 20년 전 | 2682 | ||
| 51 |
prosper
|
20년 전 | 2335 | |
| 50 |
prosper
|
20년 전 | 2153 | |
| 49 | 20년 전 | 2160 | ||
| 48 | 20년 전 | 2315 | ||
| 47 | 20년 전 | 1914 | ||
| 46 | 20년 전 | 1916 | ||
| 45 | 20년 전 | 2122 | ||
| 44 | 20년 전 | 2348 | ||
| 43 | 21년 전 | 4563 | ||
| 42 |
prosper
|
21년 전 | 2698 | |
| 41 |
prosper
|
21년 전 | 2100 | |
| 40 | 21년 전 | 2164 | ||
| 39 | 21년 전 | 2129 | ||
| 38 | 21년 전 | 2399 | ||
| 37 | 21년 전 | 2550 | ||
| 36 | 21년 전 | 1766 | ||
| 35 | 21년 전 | 4059 | ||
| 34 | 21년 전 | 3839 | ||
| 33 | 21년 전 | 2978 | ||
| 32 |
prosper
|
21년 전 | 2886 | |
| 31 | 21년 전 | 5251 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기