문제

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
.

DateInterval :: Format <형식 < / a> 매개 변수. MySQL이 NOW()를 반환하도록하려면 응용 프로그램 서버 (PHP 실행중인 PHP 간)와 데이터베이스 서버 간의 시간 불일치가 피해 지도록하십시오.

복잡한 시간 계산이 필요한 경우 소스 .이것은 매우 강력한 방법이 매우 훌륭한 획득 시간 계산을 알고 있습니다 (예 : 5 초 전, 20 초 전, 약 1 분 전, 10 분 전, ...)


날짜 형식 를 통해 포맷 할 수 있습니다 :

SELECT your_fields, FROM_UNIXTIME(date, 'H:%i:%s') FROM table;
.

예를 들어 12:24:59를 줄 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top