2012-01-04 4 views
1

유닉스 타임 스탬프 형식으로 두 날짜 사이의 총 월을 찾아야합니다. 나는 그것을위한 PHP 함수를 만들고 싶다. 나는이 시도했다 :총계 월

get_total_month($startunixdate, $endunixdate) { 
    $monthdiff = $endunixdate-$startunixdate; 
    $monthdiff = $monthdiff/60*60*24*31; 
    return $monthdiff; 
} 

이 기능은 별도로 30 31 년뿐만 아니라 달을 뛰어 고려 하는가를, 아니면 그냥 대략 한달 계산합니다?

+1

실제로 무엇을하는지 이해하지 못합니까? 60 * 60 * 24 * 31 ... –

+3

으로 나누어집니다. 카운트. 더 나은 결과를 얻으려면 다음을 확인하십시오 : http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – devmach

+0

@ ÁlvaroG.Vicario : 먼저 질문을 읽으십시오. 명확하지 않은 경우 두 번 또는 세 번 읽으십시오 ... –

답변

1

U는 PHP 5.3 datetime 메서드를 사용할 수 있습니다.

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 

는 참고 :이 작업을 수행하기 위해 PHP DateTime

2

날짜 시간 클래스를 사용합니다.

function get_total_month($start, $end) { 

    // Create DateTime objects 
    $dt1 = new DateTime($start); 
    $dt2 = new DateTime($end); 

    // Get DateInterval object representing difference between the two 
    $diff = $dt1->diff($dt2); // OR: $diff = date_diff($dt1, $dt2); 

    // Print the "months" out 
    echo $diff->format("Difference: %R%m months"); // OR access $diff->m manually 
+0

유닉스 타임 스탬프를 사용한다면'new DateTime()'이 필요합니다. 나는 수업에 완전히 바보입니다. –

+0

마지막 코멘트에서 귀하가 의미하는 바를 이해했는지 모르겠습니다. 필자가 작성한 함수는 $ start 및 $ end UNIX 타임 스탬프를 사용하여 DateTime 객체를 만듭니다. – pbotros1234

4

귀하의 대답은이 줄에 있습니다.

$monthdiff = $monthdiff/60*60*24*31 

이것은 31 일 기준으로 한 달을 계산합니다. 코드는 초를 60으로 나누어 분 수를 얻고, 다시 60을 시간, 24를 일 수로 나눈 다음 한 달의 길이를 31로 나눕니다.

이렇게하면 월 수가 근사합니다. 예를 들어, 2 월 초와 3 월 초에 타임 스탬프를 사용하면 보통 28 일 (윤년의 경우 29)의 타임 스탬프 차이를 갖게됩니다. 31을 1로 나누면 전체 월을 표현하기 위해 31을 사용하기 때문에 실제로는 달력 월이 넘었습니다.

+0

내가 아는 한, 심지어 위의 코드를 작성했습니다. 제 질문은 "정확한 양의 달이 발견되었거나 대략 한달의 결과가 나온다면?" –

+1

@RahulSingh 근사치 만 줄 것입니다. 한 달 동안의 일 수에 대한 특정 규칙이 나오는 달력을 고려하지 않습니다. 나는 내 대답을 편집했다. 희망을 올바르게 이해했습니다. – Bryan

+1

@RahulSingh -이 대답이 말하는 바가 아닙니까? 월간 길이는 28에서 31까지이지만, 항상 31로 나눕니다. 결론 : 단지 근사값입니다. –