2014-07-07 3 views
1

일부 기본 날짜 형식을 사용하는 데 어려움을 겪고 있으며 "일 남음"으로 올바른 번호를 표시합니다. dateStart가 잘못된 형식으로 interped처럼 보인다PHP - 날짜 형식의 문제

2014년 7월 7일 2014년 1월 8일 -6 :

date_default_timezone_set('Europe/Oslo'); 
$dateNow = date('d/m/Y', time()); 
$dateStart = date('d/m/Y', strtotime('01/08/2014')); 
$dateFinished = date('d-m-Y', $dateStart + strtotime("+62 days")); 
$daysLeft = intval($dateFinished-$dateNow); 

echo($dateNow. "<br>"); 
echo($dateStart. "<br>"); 
echo($daysLeft. "<br>"); 

이 에코는이 코드입니다. 나는 -/ 모두 시도했지만 더 나은 것은 없습니다.

내가 잘못 했습니까? 그냥 수학인가 논리인가?

+0

'위해서 var_dump ($ dateStart +의 한 strtotime ("+ 육십이일")) :

그냥 간단하고 짧은 스크립트를했다. – zerkms

답변

2

케이스. 글쓰기가 쉽고 이해하기 쉽습니다. ;`--- 항상지지 않습니다 확인 결코

<?php 
date_default_timezone_set('Europe/Oslo'); 
$dateNow = new DateTime('now'); 
$dateStart = new DateTime('2014-08-01'); 
$dateFinished = new DateTime($dateStart->format('Y-m-d')); 
$dateFinished->add(new DateInterval('P62D')); 
$daysLeft = $dateFinished->diff($dateNow); 

echo($dateNow->format('d/m/Y'). "<br>"); 
echo($dateStart->format('d/m/Y'). "<br>"); 
echo($daysLeft->format('%d'). "<br>"); 
?> 
+0

이것은 datestart를 수정하지 않습니까? $ dateStart-> add (new DateInterval ('P62D') @Yannici – simonkaspers1

+0

물론 힌트 주셔서 감사합니다 : P 방금 내 대답을 편집했습니다. – Yannici

2

$dateStart은 문자열입니다. 다음을 수행해야합니다.

$dateStart = date('d/m/Y', strtotime('01/08/2014')); 
$dateFinished = date('d-m-Y', strtotime("+62 days", strtotime('01/08/2014'))); 

더 복잡한 날짜 계산의 경우 DateTime()을 고려하십시오.

1

당신이 DateTime 클래스를 사용하여 날짜 사이의 차이를 계산 할 수있는 것보다 당신의 PHP는, 5.3+ 경우 :

$date1 = new DateTime("2007-03-24"); 
$date2 = new DateTime("2009-06-26"); 
$interval = $date1->diff($date2); 

echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 

또는

나는이에 OOP를 (개체 지향)를 사용하는 것이 좋습니다
echo "difference " . $interval->days . " days ";