MySQL 테이블에서 PHP 시간 ()을 포맷하십시오
-
14-09-2020 - |
문제
MySQL 데이터베이스에 저장된 주석을 생성합니다.
PHP Time 함수를 로깅하면 Comment가 게시되므로 time()
를 기록합니다. 그런 식으로 ... "댓글 ..."댓글 ... Page 2 분 나중에 새로 고침하는 경우 "댓글을 표시하십시오."2 분 전 "댓글"
다른 데이터와 함께 데이터베이스에 time()
를 데이터베이스에 입력하는 방법은 다음과 같습니다.
$date=time();
// Insert data into mysql
$sql="INSERT INTO testimonials (username, comment, date)
VALUES ('$username', '$comment', '$date')";
.
지금 ... 이와 같은 데이터를 가져옵니다 :
while ($row = mysql_fetch_row($result) )
{
echo "<b>Random Comment</b></br>";
echo ("<p>\n> $row[1]"); //comment
echo ("</br>-$row[0]</p>"); //name
echo ("</br>$row[2]"); //date
.
내 서버의 샘플 출력은 다음과 같습니다.
임의의 코멘트
이것은 가장 멋진 의견입니다 !!!!
-kyle
1278905319
어떻게 "1278905319"를 읽을 수있는 형식으로 "4 초 전"또는 초, 분, 시간, 일, 주, 몇 달, 몇 년을 다루는 것과 같은 읽을 수있는 형식으로 변환 할 수 있습니까?
은 그 일을하는 잘못된 방법입니까? 나는 MySQL 타임 스탬핑에 대해 읽었지만, 나는 그것을 이해하지 못한다.
그래서 내 주요 질문은 출력시 읽을 수있는 시간으로 시간을 포맷하는 방법입니다. "2 초 전"
고맙습니다.=)
해결책
여기에 내가 발견 한 함수는 여기 여기 여기 P>
<?php
function RelativeTime($timestamp){
$difference = time() - $timestamp;
$periods = array("sec", "min", "hour", "day", "week", "month", "years", "decade");
$lengths = array("60","60","24","7","4.35","12","10");
if ($difference > 0) { // this was in the past
$ending = "ago";
} else { // this was in the future
$difference = -$difference;
$ending = "to go";
}
for($j = 0; $difference >= $lengths[$j]; $j++) $difference /= $lengths[$j];
$difference = round($difference);
if($difference != 1) $periods[$j].= "s";
$text = "$difference $periods[$j] $ending";
return $text;
}
. 다른 팁
먼저 자동 업데이트 시간 소인 필드를 사용하여 MySQL을 삽입 할 수있게하십시오.
CREATE TABLE `table_a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(255),
`comment` TEXT,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
.
이렇게하면 PHP 코드에서 날짜를 삽입하는 것에 대해 걱정할 필요가 없으며 MySQL 클라이언트에서 다른 곳에서 테스트를 수행하는 경우 날짜가 계속 올바르게 삽입됩니다. PHP datetime 클래스 (PHP가 필요함)를 사용해야합니다. 5.3.0 이상), 날짜와 시간을 아주 간단하게 작업 할 수 있습니다. 다음은 데이터베이스에서 정보를 가져 와서 형식화 된 시간 간격을 반환하는 예제입니다.
$result = $mysqli->query(
'SELECT ' .
'`id`, ' .
'`username`, ' .
'`comment`, ' .
'`date`, ' .
'NOW(), ' .
'FROM table');
$row = $result->fetch_assoc();
print_r($row);
Array
(
[id] => 1
[username] = 'Fred'
[comment] = 'My first post'
[date] => 2009-09-28 07:08:12
[now] => 2010-07-12 08:47:03
)
$now = new DateTime($row['now']);
$post = new DateTime($row['date']);
$interval = $post->diff($now);
echo $interval->format('%m months, %d days, %d days, %h hours, %m minutes, %s seconds');
// 9 months, 14 days, 14 days, 1 hours, 9 minutes, 51 seconds
.