2013-04-23 1 views
1

코드 사이에 정확한 날짜가 표시되지 않는 문제가 있습니다. Days Minutes and Seconds는 모두 올바르게 작동하지만 시간이 빼기 금액으로 표시되고 나머지는 그렇지 않은 것으로 보입니다. 이 날짜 2171167 = 2013년 5월 18일 0시 0분 0초 사용 예를 들어PHP 두 날짜를 비교하지만 시간이 올바르게 작동하지 않습니다.

- 2013년 4월 22일 20시 53분 53초

을 나는 이십오일 19시 6분을 다음과 같은 출력을 나타납니다 내가 주석 한 두 번째 "시간"변수가 ​​작동하지 않는 이유를 말해주십시오 수 있다면

$date_one = date('Y-m-d H:i:s'); 
$date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013)); 
$Difference = abs(strtotime($date_two) - strtotime($date_one)); 

$Days = date("d", $Difference); 
//$Hours = date("H", $Difference); Why does this NOT WORK??? 
$Minutes = date("i", $Difference); 
$Seconds = date("s", $Difference); 

07 내가 대단히 감사하겠습니다.

+0

주석 처리 된 행은 19를 반환하지 않습니까? 돌아 오는게 뭐야? – jraede

+0

그것은 19를 반환하고 나는이 시나리오에서 3이어야한다고 생각합니다. – Ryan

+0

예, 오늘의 나머지 20:53:53은 03:06:07 – Ryan

답변

3
<?php 
header('Content-Type: text/plain'); 

$date1 = DateTime::createFromFormat('Y-m-d H:i:s', '2013-05-18 00:00:00'); 
$date2 = DateTime::createFromFormat('Y-m-d H:i:s', '2013-04-22 20:53:53'); 

$result = $date1->diff($date2); 

echo $result->format('%Y-%m-%d %H:%i:%s'); 
?> 

쇼 :

00-0-25 03:6:7 

변수로 분할하려면 :

list($year, $month, $day, $hour, $minute, $second) = explode('-', $result->format('%Y-%m-%d-%H-%i-%s')); 

var_dump($year, $month, $day, $hour, $minute, $second); 

쇼 :

string(2) "00" 
string(1) "0" 
string(2) "25" 
string(2) "03" 
string(1) "6" 
string(1) "7" 
+0

나는 전에 이것을 보았지만 그 결과를 그들 자신의 변수로 나눌 수 없어 나중에 각각 따로 사용할 수 있었다. 장기간 나는 이것을 사용할 수 없었다. 이 방법을 사용하여 시간, 분, 초를 각자의 변수에 넣는 것이 가능하다면 완벽하게 작동합니다. – Ryan

+1

'$ Hours = $ result-> format ('% H ')'을 사용하면 시간을 알 수 있습니다. – Barmar

+0

@ 업데이트. – BlitZ

0

는 그냥 호를 변경 urs 구문.

<?php 
    $date_one = date('Y-m-d H:i:s'); 
    $date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013)); 
    $Difference = round(strtotime($date_two) - strtotime($date_one)); 

    $Days = date("d", $Difference); 
    $Hours = date("H", $Difference); 
    echo $Hours = $Difference/60; 
    $Minutes = date("i", $Difference); 
    $Seconds = date("s", $Difference); 
?> 
+0

하루의 시간뿐만 아니라 총 시간 수입니다. – Barmar

+0

죄송합니다, 이것은 해결책이 아닌 해결책입니다. – Ryan

0

당신이 당신의 실제 응답에 코드 아래에 잘못된 첫 데이트의 사용을 사용하는

$date_one = "2013-04-22 20:53:53"; //date('Y-m-d H:i:s'); 
$date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013)); 
$Difference = abs(strtotime($date_two) - strtotime($date_one)); 

echo "<br> dif ->".date('d H:i:s',$Difference); 

echo "<br> day -> ".$Days = date("d", $Difference); 
echo "<br> Hours -> ".$Hours = date("H", $Difference); 
echo "<br> Minutes -> ".$Minutes = date("i", $Difference); 
echo "<br> Seconds -> ".$Seconds = date("s", $Difference); 

: OUTPUT :

DIF -> 26 3시 6분 7초

day -> 26 
Hours -> 03 
Minutes -> 06 
Seconds -> 07 
+0

내 출력이 dif -> 25 22:06:07 일 -> 25 시간 -> 22 – Fatmuemoo

+0

아파치 서버 시간이 다를 수 있습니다 광산 – liyakat

관련 문제