2014-04-27 2 views
0

시간이있는 날짜 값이 있습니다. (27/4/2014 18:00:00)PHP에서 날짜에 일을 추가하는 가장 좋은 방법은 무엇입니까?

그 외에도 일/시간/분으로 구성된 문자열이 있습니다. (10/7/0).

결국, 나는 하나의 날짜를 만드는 두 값을 더해야합니다.

이 예제에서 값 합계는 37/4/2014 28 : 7 : 00입니다.

원하는 결과는 2014 년 5 월 8 일 4시 7 분이됩니다. PHP에서이 결과를 얻는 가장 좋은 방법은 무엇입니까 ??

+1

'한 strtotime ("+ 일일"한 strtotime ("날짜 문자열을"))'? – Smar

+0

Smar의 주석은 좋은 접근 방법이지만 문자열 표현 대신 실제'DateTime' 객체를 사용하는 것이 좋습니다. 시작 날짜,'modify()'또는'add()'에서'DateTime'을 생성하고 필요한 시간 간격을 문자열로 변환하십시오. – DCoder

+0

'27/4/2014 18 : 00 : 00'에 10 시간 7 분을 추가하면 '28/4/2014 04 : 00 : 00'이 아닌가요? '28 : 7 : 00'은 유효한 시간이 아닙니다. –

답변

1
function($date, $addon) 
{ 
    $date1 = strtotime($date); 

    $explode = explode('/', $addon); 
    $date2 = ($explode[0]*86400) + ($explode[1]*3600) + ($explode[2]*60); 

    return date('j/n/Y H:i:s', ($date1+$date2)); 
} 
+0

'strtodate()'함수가 없다. 'strtotime()'을 의미합니까? –

+0

예가 오타되었습니다. 감사합니다 :) –

+0

날짜 계산은 하드 코딩 된 초가 아닌 실제 날짜 개념 (시간, 일, 월 등)을 사용하여 수행해야합니다. 귀하의 접근 방식은 일광 절약 시간과 윤년을 뛰어 넘을 것입니다. (또한, 당신의 코드는'$ explode [0]'을 두 번 사용하고 있습니다.) – DCoder

0

내가 타임 스탬프로 변환 것 다음에 추가하고이를 다시 변환 :

$time = strtotime($time1) + strtotime($time2); 

echo date('m/d/Y h:i:s a', $time); 
+0

이 경우'$ time2'는 적절한 날짜가 아닌 시간/시간 간격입니다. 이를 날짜로 취급하는 것은 올바르지 않으며 두 날짜를 함께 추가하는 것은 논리적으로 올바르지 않습니다 ("2004 년 6 월 3 일"에 "1990 년 4 월 15 일"을 추가하는 것은 무엇을 의미합니까?). – DCoder

+0

논리적으로별로 의미가 없다는 것에 동의합니다. 그러나이 방법은 초를 추가 (예 : 24 * 60 * 60 일)하거나 1/1/70의 날짜 오프셋을 사용하는 경우 작동 할 수 있습니다. – thexacre

+0

Parag의 것을 사용했지만 고마워. – user3503758

관련 문제