2017-12-31 28 views
1

PHP에서 30 년을 더하고 싶습니다. 20 년 후에는 정상적으로 작동하지만 20 년을 30 년으로 대체하면 기본 날짜가 표시됩니다. 1970-01-01처럼. 이것이 내가 한 일이다.30 년 더하기 PHP 추가

$created_date = '2017-12-30 08:30:27' 

$futureDate=date('Y-m-d', strtotime('+30 year', strtotime($created_date))); 

echo $futureDate; 

오/피 :

1970-01-01 

어떤 아이디어 왜?

+0

귀하의 코드는 [나를 위해 노력하고 있습니다 (http://rextester.com/MVPKLN62374). 문제의 재현 가능한 예를 게시 할 수 있습니까? –

+0

아무런 문제가 보이지 않습니다. https://ideone.com/2Xp7PS – Ravi

+0

아마도 타임 스탬프를 초과했을 것입니다. 지금부터 몇 년 후에는 타임 스탬프가 더 이상 작동하지 않습니다. 2000 년 문제가 있었지만 타임 스탬프가 최대치에 도달하면 다른 문제가됩니다. – halojoy

답변

4

당신은을 사용할 수 있습니다 81,119,

<?php 

$created_date = '2017-12-30 08:30:27'; 

$EndDateTime = DateTime::createFromFormat('Y-m-d H:i:s', $created_date); 
$EndDateTime->modify('+30 years'); 
echo $EndDateTime->format('Y-m-d H:i:s'); 

출력 : - https://eval.in/928779

4

32 비트에서 2038

이 문제를 해결 작업을 수행하는 대신 DateTime 클래스를 사용하여 그 해 이후 날짜를 처리 할 수없는 버그가 있었다 2038

PHP 5.3+를 들어 PHP 5.2
$date = new DateTime('2017-12-30'); 
$date->add(new DateInterval('Y30')); 
echo $date->format('Y-m-d'); 

$date = new DateTime('2017-12-30'); 
$date->modify('+30 year'); 
echo $date->format('Y-m-d'); 
+0

한계를 만드는 것은 버그가 아닙니다. 32 비트 컴퓨터에서 처리 할 수있는 최대 값입니다. 나는 이것이 결함이지만 버그는 아니라는 것에 동의 할 수있다. – Andreas

관련 문제