2013-10-29 5 views
0

시간을 한 시간으로 변환하는 많은 정보가 있지만 다른 방법은 아닙니다.PHP는 시간을 시간으로 변환합니다.

내가해야 할 일의 예가 P0DT2H0M0S로 120 분간 변환됩니다. 그리고 P0DT13H10M0S에 13:10. 그리고 PT2H0M0S로 120 분.

빠르고 쉬운 방법이 있습니까?

+1

날짜/시간 기능을 사용합니다. 하나의 현재 시간을 가져 와서'DateTime :: modify()'로 시간을 수정하고,'DateTime :: diff()'와의 차이점을 발견하면 원하는대로 출력 할 수 있습니다. –

답변

1

설명하는 형식은 ISO 8601 날짜/시간 형식입니다. 다른 사람의 여기에

http://www.php.net/manual/en/class.dateinterval.php#113415

그리고 다음 DateInterval 클래스의 PHP 문서에서

Here's how it describes intervals.는, 누군가가 당신이 객체 지향 방식으로 ISO 8601로 문자열을 변환하는 방법의 예를 공유하고있다 솔루션을 사용하여 기능보다는 객체 지향 날짜 방법 :

https://stackoverflow.com/a/13301472/2119660

+0

Cheerz. 내가 그걸로 일할 수있는 것 같아. – Rik

0

가장 쉬운 방법은, ISO-8601 시간 간격을 얻을 수 있습니다 지속 시간은 방법이다 createFromDateString

사용 :

echo getISO8601duration_withZeros("3 year 20 day 15 minute"); # P3Y0M20DT0H15M0S 
echo getISO8601duration_withZeros("1 hour 120 minutes");  # P0Y0M0DT1H120M0S 
echo getISO8601duration_withZeros("7 year 5 month 3 day"); # P7Y5M3DT0H0M0S 

# 13:10 example 
$dt = new DateTime('13:10'); 
$interval_spec = "{$dt->format('H')} hour {$dt->format('i')} minute"; 
echo getISO8601duration_withZeros($interval_spec);   # P0Y0M0DT13H10M0S 

기능 :

function getISO8601duration_withZeros($interval_spec) { 
    $interval = DateInterval::createFromDateString($interval_spec); 
    return $interval->format('P%yY%mM%dDT%hH%iM%sS'); 
} 

데모 :

관련 문제