2016-08-30 11 views
-1

今から最初に特定の日付(日+月)が発生する年を返す関数が必要です。PHP:次回に日付が来る年

function year($day, $month) { 
    // ... 
    return $year; 
} 

$day$yearは2桁の数字例えば

あります日付が'02/25 'の場合は' 2017 '(または' 17 ')を返します。 [今日は2016年8月30日]

閏年は無視され、入力を検証する必要はありません。

EDIT:

year($day, $month) { 

    $today_day = date('d'); 
    $today_month = date('m'); 

    $year = date('y'); 

    if($month > $today_month) { 
    return $year; 
    } else if ($month < $today_month) { 
    return $year + 1; 
    } else { 
    if($day >= $today_day) { 
     return $year; 
    } else { 
     return $year + 1; 
    } 
    } 

} 
+0

私はそれを取得しません。 – Linesofcode

+0

@TheOneandOnlyChemistryBlob今日との比較ですが、私の解決策が不必要に大きいと思います – Scriptim

+1

投稿すると他の人が自分の仕事をしていないように感じて、回答を与えるかもしれません –

答えて

2

はちょうどあなたが今日に対してチェックされている日付を比較する私の試み。今日またはそれ以前の場合は、日付の年を増やします。それ以外はしないでください。その後、その年を返します。

DateTime()の機能はこれを簡単にします。

function year($day, $month) { 
    $date = new DateTime("{$month}/{$day}"); // defaults to current year 
    $today = new DateTime(); 
    if ($date <= $today) { 
     $today->modify('+1 year'); 
    } 

    return $today->format('Y'); 
} 

echo year(6, 6); // 2017 
echo year(12, 12); // 2016 

Demo

1

私はあなたの努力に感謝!それはかなり良いですが、確かにいくつかの微調整を使用することができます。私たちは、不要なif文の

この関数は、月と日付の2つのパラメータを受け入れます。機能を呼び出す際には必ず指示に従ってください。

この関数では、$ dateは現在の年と連結された入力日付です。

例:年(12,25)月12月(12)と日が25

年(12,25)である2015年12月25日と$日になるだろう年を指し、 。

function year($month, $day) 
{ 
    $date= date('Y').'-'.$month.'-'.$day; 
    if (strtotime($date) > time()) { 
     return date('y'); 
    } 
    return (date('y')+1); 
} 

echo year(12,25); // 16 

echo year(2,25); // 17 

は今、私たちが行う必要があるのは、現在のtimestamp-時間()で$日のタイムスタンプをチェックです。

strtotime($ date)> time()入力日付timestampは現在のタイムスタンプより大きい。これは、この日付が今年もまだ来ていないことを意味します。したがって、現在の年の日付( 'Y')を返します。

上記が実行されていない場合、この日付が過ぎたことは明らかです。したがって、私たちは翌年の日付( 'Y')+ 1を返します。

関連する問題