트위터나 페이스북을 보면 날짜 시간이 아니라
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]
소스가 잘 안 보이는 거 같아요...
첨부파일 다운받으세요..
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 330 |
prosper
|
20년 전 | 2240 | |
| 329 |
prosper
|
20년 전 | 1849 | |
| 328 |
prosper
|
20년 전 | 1660 | |
| 327 | 20년 전 | 3740 | ||
| 326 | 20년 전 | 4816 | ||
| 325 |
hwatta
|
20년 전 | 2435 | |
| 324 |
|
20년 전 | 3119 | |
| 323 | 20년 전 | 5823 | ||
| 322 |
hwatta
|
20년 전 | 2816 | |
| 321 |
hwatta
|
20년 전 | 2295 | |
| 320 |
yesmoa
|
20년 전 | 4548 | |
| 319 | 20년 전 | 2647 | ||
| 318 | 20년 전 | 2222 | ||
| 317 |
kyodon
|
20년 전 | 2750 | |
| 316 | 20년 전 | 2551 | ||
| 315 |
|
20년 전 | 2868 | |
| 314 |
|
20년 전 | 3307 | |
| 313 |
|
20년 전 | 2624 | |
| 312 |
yesmoa
|
20년 전 | 4697 | |
| 311 | 20년 전 | 3224 | ||
| 310 |
홀로남은자
|
20년 전 | 4536 | |
| 309 | 20년 전 | 2991 | ||
| 308 | 20년 전 | 4105 | ||
| 307 | 20년 전 | 4339 | ||
| 306 | 20년 전 | 7009 | ||
| 305 | 20년 전 | 3842 | ||
| 304 | 20년 전 | 2742 | ||
| 303 |
크리스탈처럼
|
20년 전 | 4375 | |
| 302 | 20년 전 | 2188 | ||
| 301 |
|
20년 전 | 4310 | |
| 300 | 20년 전 | 3764 | ||
| 299 | 20년 전 | 2564 | ||
| 298 | 20년 전 | 4791 | ||
| 297 |
|
20년 전 | 2504 | |
| 296 | 20년 전 | 4498 | ||
| 295 | 20년 전 | 3551 | ||
| 294 | 20년 전 | 3569 | ||
| 293 | 20년 전 | 3803 | ||
| 292 | 20년 전 | 3185 | ||
| 291 |
yesmoa
|
20년 전 | 5900 | |
| 290 | 20년 전 | 2919 | ||
| 289 | 20년 전 | 5826 | ||
| 288 |
|
20년 전 | 2350 | |
| 287 |
|
20년 전 | 1755 | |
| 286 |
|
20년 전 | 2124 | |
| 285 |
|
20년 전 | 3516 | |
| 284 |
|
20년 전 | 2016 | |
| 283 |
|
20년 전 | 4382 | |
| 282 | 20년 전 | 3361 | ||
| 281 |
|
20년 전 | 2187 | |
| 280 |
|
20년 전 | 7782 | |
| 279 | 20년 전 | 5522 | ||
| 278 | 20년 전 | 2972 | ||
| 277 |
|
20년 전 | 5553 | |
| 276 | 20년 전 | 2340 | ||
| 275 | 20년 전 | 2575 | ||
| 274 | 20년 전 | 2340 | ||
| 273 | 20년 전 | 2190 | ||
| 272 | 20년 전 | 2112 | ||
| 271 | 20년 전 | 2583 | ||
| 270 | 20년 전 | 2566 | ||
| 269 | 20년 전 | 2448 | ||
| 268 | 20년 전 | 2662 | ||
| 267 | 20년 전 | 2348 | ||
| 266 | 20년 전 | 2550 | ||
| 265 | 20년 전 | 3482 | ||
| 264 |
|
20년 전 | 5337 | |
| 263 |
|
20년 전 | 3696 | |
| 262 | 20년 전 | 3151 | ||
| 261 |
허저비
|
20년 전 | 5906 | |
| 260 |
|
20년 전 | 5699 | |
| 259 | 20년 전 | 4117 | ||
| 258 | 20년 전 | 2365 | ||
| 257 | 20년 전 | 3164 | ||
| 256 | 20년 전 | 1883 | ||
| 255 | 20년 전 | 1547 | ||
| 254 | 20년 전 | 3122 | ||
| 253 | 20년 전 | 3534 | ||
| 252 | 20년 전 | 5082 | ||
| 251 | 20년 전 | 5792 | ||
| 250 | 20년 전 | 3654 | ||
| 249 | 20년 전 | 4991 | ||
| 248 | 20년 전 | 3271 | ||
| 247 | 20년 전 | 3616 | ||
| 246 |
|
20년 전 | 7924 | |
| 245 |
|
20년 전 | 5886 | |
| 244 | 20년 전 | 4467 | ||
| 243 |
|
20년 전 | 4020 | |
| 242 | 20년 전 | 2750 | ||
| 241 | 20년 전 | 2692 | ||
| 240 | 20년 전 | 2323 | ||
| 239 | 20년 전 | 1627 | ||
| 238 |
아우겐나이스
|
20년 전 | 2239 | |
| 237 |
email
|
20년 전 | 3660 | |
| 236 | 20년 전 | 4122 | ||
| 235 | 20년 전 | 10440 | ||
| 234 | 20년 전 | 5039 | ||
| 233 | 20년 전 | 3353 | ||
| 232 | 20년 전 | 3174 | ||
| 231 | 20년 전 | 3808 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기