2015-01-05 6 views
0

저는 strtotime() 함수를 통해 날짜를 1.5, 2.5와 같이 십진수로 주를 추가하려고합니다. 그러나 올바른 결과를주지 못한다. 나는 그것을 다음과 같이 사용하고있다 :PHP에서 십진수로 주를 추가하십시오.

$start_date = "2015-01-01"; 

$date = strtotime(date("Y-m-d", strtotime($start_date)) . " +3.5 weeks"); 

$date = date("Y-m-d",$date); 

echo $date; 

그리고 그것을주는 2015-02-04 출력. 다음과 같은 십진수가 아닌 값을 추가 할 때 :

$date = strtotime(date("Y-m-d", strtotime($start_date)) . " +3 weeks"); 

완벽한 결과를 제공합니다.

의견이 있으십니까?

+1

'strtotime ('+ 3 weeks', $ start_date)'는 타이핑을 줄일 수 있습니다 :) –

+0

어쨌든 반주는 무엇입니까? 1 주일은 7 일이므로 3 일 또는 4 일입니다. –

+0

고마워요. @ Ja͢ck ... 나는 확실히 할거야. :) –

답변

1
$date = '2015-01-01'; 

$weeks = "2,3,4,4.5"; 

foreach(explode(",", $weeks) as $week) { 
print $week."\n"; 
$hours = $week * 24 * 7; 
print $hours."\n"; 
print date("Y-m-d", strtotime("{$date} +{$hours} hours"))."\n"; 
} 
+0

+ 이전 일 및 시간을 삭제할 수 있습니다 : strtotime ("+ 3 weeks 3 days 12 hours", $ start_date); –

+0

감사합니다. Eugen, 사실 저는 이미 이것을 압니다. 내 문제는 $ start_date가 동적 인 값이며 일, 주, 월 등의 추가 기간도 될 것입니다. 입력이 일주일이라도 2,3,4,4.5 등과 같은 값이있을 것입니다. 따라서 한 주 동안의 모든 값을 처리하는 자동화 된 방법을 찾으려고합니다. –

+0

편집을 시도하십시오 : -) ... – Eugen

1

당신은이 논리를 사용하여 주 진수를 곱하거나 1,2,2.5,3,3.5을 좋아하지 일주일에 시간의 양을 곱 수 있습니다

$week = 2.5; 
$desired = '+ '.$week*168.' hours'; 
$date = strtotime($desired, $start_date); 

을하지만, 몇 시간 또는 초 정수로 재생할 수 있고 간단한 추가 만하면 왜 문자열로 놀 수 있습니까?

+0

는 Eugen의 대답이 내 앞에 놓인 것처럼 보입니다. –

+0

네,하지만 고마워요 :) @Christophe Willemsen, +1 당신도 너무 친구 야. –