포럼에 게시하거나 댓글을 달거나 QQ 공간을 사용하여 로그나 Weibo 댓글을 게시할 때 게시된 콘텐츠가 '방금 지금', '5분 전', '어제 10시'로 표시되는 것을 볼 수 있습니다. 23" 등에서는 특정 날짜와 시간을 직접 표시하지 않습니다.
이 글에서는 타임라인을 기반으로 시간 변환을 구현하는 방법을 소개합니다.
먼저 시간의 여러 기능을 이해해야 합니다.
time(): 현재 Unix 타임스탬프를 반환합니다.
date(): 현지 시간/날짜 형식을 지정합니다.
적용 예:
date("Y-m-d H:i:s",time())
현재 시간 형식 지정, 출력: 2010-10-11 05:27:35
strtotime( ): 영어 텍스트 날짜/시간 설명을 Unix 타임스탬프로 구문 분석합니다.
적용 예:
echo strtotime("+1 day"), "n";
1일 전 타임스탬프 출력: 1286861475
date_default_timezone_set(): 사용할 기본 시간대를 설정합니다.
일반적으로 베이징 시간을 설정합니다: date_default_timezone_set("PRC");
위 함수를 이해한 후 타임라인 함수를 작성할 수 있습니다.
이 함수의 원리는 현재 시스템 시간과 목표 시간을 비교하는 것입니다. 시간을 입력하고 차이 값을 구한 후, 차이 값을 시간 범위(초로 변환)와 비교하여 시간 축 범위(예: 5분 전)에 따라 다른 결과를 출력합니다. 계산의 용이성을 위해 시간을 Unix 타임스탬프로 변환합니다.
function tranTime($time) {
$rtime = date("m-d H:i",$time)
$htime = date("H:i",$time)
$time = time() - $time;
if ($time $str = 'just'
}
elseif ($time $min = Floor($time/60);
$str = $min.'분 전'
}
elseif ($time $h = Floor($time/(60*60));
$str = $h.'시간 전'.$htime;
}
elseif ($time $d = Floor($time/(60*60*24))
if($d==1)
$str = '어제'.$rtime ;
$ Str = '어제'. $ Rtime
}
Else {
$ Str = $ rtime;
}
tranTime() 함수의 $time 매개변수는 Unix 타임스탬프여야 합니다. 그렇지 않은 경우 먼저 strtotime()을 사용하여 Unix 타임스탬프로 변환하세요. 위 코드는 한눈에 이해하기 쉽기 때문에 더 이상 설명할 필요가 없습니다.
함수 호출 및 직접 출력:
$times="1286861696 "
echo tranTime($times)