2012-01-31 5 views
0

私は2つの日付から2つのタイムスタンプを持っています:01/2012と02/2013。これらのタイムスタンプの差が、私が使用した関数である31795200.です:2 unixtimestampsからの月

function unixTimeStampInMonths($timestamp){ 
    $elapsed_minutes = ($timestamp/60); 
    $elapsed_hours = ($elapsed_minutes/60); 
    $elapsed_days = ($elapsed_hours/24); 
    $elapsed_months = floor($elapsed_days/30); 
    return $elapsed_months; 
} 

しかし、問題があり、数ヶ月は30日に丸められます。月間の差を計算する最良の方法は何ですか?

LE:友人によって提案された

ソリューションです:

// arguments format: 05/2010 
function monthDifferenceBetween2Dates($first, $second){ 
    $expl1 = explode('/', $first); 
    $expl2 = explode('/', $second); 

    $months_in_years = ($expl2[1] - $expl1[1] - 1) * 12; 
    $first_months = 12 - $expl1[0]; 
    $second_months = $expl2[0]; 

    return $months_in_years + $first_months + $second_months; 
} 

私はつもり利用これです。おかげではなく、UNIXタイムスタンプの

答えて

2

使用PHPのDateTimeクラス@nickb:

$start = DateTime::createFromFormat('m/d/Y', '01/01/2012'); 
$end = DateTime::createFromFormat('m/d/Y', '02/01/2013'); 

$diff = $start->diff($end); 
var_dump($diff); 

の出力は以下となります。

object(DateInterval)#3 (8) { 
    ["y"]=> 
    int(1) 
    ["m"]=> 
    int(1) 
    ["d"]=> 
    int(0) 
    ["h"]=> 
    int(0) 
    ["i"]=> 
    int(0) 
    ["s"]=> 
    int(0) 
    ["invert"]=> 
    int(0) 
    ["days"]=> 
    int(397) 
} 

そうで、総ヶ月を計算するために、我々は行うことができます。

$months = $diff->y * 12 + $diff->m; 

13を印刷します。Demo

+0

私自身の解決策がありますが、投稿できません。それは私を聞かせていない、とこのコメントのテキストエリアで投稿は吸う​​:( – machineaddict

関連する問題