2016-09-05 1 views
1

사람이 읽을 수있는 문자열로 일과 시간의 시간을 표시하고 싶지만 하루 일과 같이 7 시간이되어야합니다. 근무일을 근무일로 전환하는 방법은 무엇입니까?

나는이 솔루션을 찾았지만, 24 시간 동일 일일 기반으로 :

function secondsToTime($seconds) { 
    $dtF = new \DateTime('@0'); 
    $dtT = new \DateTime("@$seconds"); 
    return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds'); 
} 

소스 : Convert seconds into days, hours, minutes and seconds

+3

는 하루 23 사이 25시간 긴 가정으로 날짜 시간이 도움이되지 않습니다. 당신은 아마 당신 자신의 일을 할 필요가 있습니다. – apokryfos

답변

4

DateTime 여기에 도움이되지 않습니다. 당신이 직접 계산해야합니다.

그러나 이것은 간단한 수학입니다. 며칠 동안 정수 나누기 및 몇 시간 동안 모듈로. 주문이 처리하는 코드를 만들어

$hours = 12345; 

$days = floor($hours/7); 
$restHours = $hours%7; 

echo "{$days} days, {$restHours} hours"; //1763 days, 4 hours 
+0

또한 몇 초에서 몇시에 얻을 기본적인 일치. –

+0

@JonStirling 예,하지만 OP는''시간과 일 수 시간 표시 '를 썼습니다. 그래서 그의 함수는 아마도 초 단위로 시간이 걸렸지 만 시간은 입력 데이터라고 가정했습니다. –

+1

고마워요, 수학 문제라고 상상하지만이 간단한 계산을 할 수 없었습니다. 나는 항상 모듈러스의 사용을 잊었다. – abenevaut

1

(이 구현할 수에 아마 1000 방법에를, 그와 같은 최고에, 또는 좋은 또는 아무것도가이 주장하지 않습니다).

function secondsToTime($seconds) { 
     $totalMinutes = intval($seconds/60); 
     $totalHours = intval($totalMinutes/60); 
     $totalDays = intval($totalHours/7); 
     echo "$totalDays days and ".($totalHours%7)." hours ".($totalMinutes%60)." minutes and ".($seconds%60)." seconds";    
} 

secondsToTime(8*60*60); 

인쇄

일일 및 1시간 0분 0 초

+1

답장을 보내 주셔서 감사합니다. – abenevaut

관련 문제