2013-04-30 2 views
0

나는 Highcharts 라이브러리를 사용하여 멋진 보고서를 만들고 있습니다.유닉스 시간 값과 현재 시간 사이의 시간을 얻으시오

나는 유닉스 시간 값 모음을 갖고 있으며, 그 날짜와 "지금"사이의 시간으로 변환해야한다.

series: [{ 
    name: 'Fecha/Hora de Acceso', 
    // Outputs: 2382374734 (a unix time) 
    data: [<?php foreach($tutores as $t) echo $t['lastlogin'] . ','; ?>] 
}] 

PHP를 사용하여이 작업을 수행하는 간단한 방법이 있습니까? 34과 같은 값을 찾고 있습니다. 아니 34 Hours.

답변

4

는 시간

http://www.php.net/manual/en/function.time.php

<?php foreach($tutores as $t) { 
    echo floor((time() - $t['lastlogin'])/3600) . ','; 
} ?> 

EDIT 차를 3600으로 결과를 비교하고 분할하기 PHP 시간() 함수를 사용하여 : 예제에서 floor()를 사용하도록 업데이트되었습니다. 또한 (라운드 사용할 수 있습니다) 또는

+0

이 작동하지만 소수 자리가 많이 반환됩니다. '34.203611111' 대신'34'을 어떻게 반환 할 수 있습니까? – sergserg

+0

필요한 라운딩 스타일에 따라'floor()'또는'round()'를 사용하십시오. – mcrumley

+0

아, 감사합니다. @mcrumley, 지금 제 예제를 업데이트하겠습니다. – nealio82

1

이 그렇게해야

$datetime1 = new DateTime(); 
$datetime2 = new DateTime('@'.$t['lastlogin']); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%h'); 
+0

존 내가 한 질문이 있습니다 : 당신은 TXT에서 준비 코드의이 작품이 있습니까 파일을 복사해서 붙여 넣기 만하면됩니다. – HamZa

+1

사실 저는 정기적으로 참조하는 DateTime 및 관련 클래스를 사용하기 위해 게시되지 않은 블로그 게시물을 가지고 있습니다. 어떤 시점에서 나는 그것을 출판 할 예정이다. :) –

+0

"DateTime :: __ construct() : 시간 문자열을 구문 분석하지 못했습니다 (2382374734)"UNIX 타임 스탬프를 DateTime 생성자에 전달하려면 타임 스탬프 앞에'@ '기호를 추가해야합니다. – feeela

0

을 원하는 다른 어떤 그 결과를 포맷 예, 당신이 할 수 DateTime::diff() : http://php.net/datetime.diff

$input = 2382374734; 

$old = new DateTime('@' . $input); 
$diff = $old->diff(new DateTime()); 

echo sprintf('%d is %d hours ago', $input, $diff->format('%h')); 
+1

DateInterval은 요일, 시간 등으로 구분 된 차이점을 저장합니다. 따라서 시간은 TOTAL 시간이 아니며, 일을 뺀 다음 남은 시간입니다. http://eval.in/18321을 참조하십시오. – mcrumley