2016-08-30 3 views
-1

주어진 날짜 (일 + 월)가 처음으로 발생하는 연도를 반환하는 함수가 필요합니다.PHP : 다음에 날짜가 발생하는 연도

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

$day$year 및 두 자리 숫자

일예이다 주어진 날짜는 '12/25 '이고 '2016'(또는 '16')을 반환해야하지만 날짜가 '02/25 '이면'2017 '(또는'17 ')을 반환해야합니다. [오늘은 2016 년 8 월 30 일]

윤년은 무시할 수 있으며 입력 내용의 유효성을 검사 할 필요가 없습니다.

편집 :

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

나는 당신의 노력을 주셔서 감사합니다! 그것은 꽤 좋았지 만, 확실히 괜찮은 튜닝을 사용할 수 있습니다. 우리는 no. 불필요한 if 문.

이 함수는 두 개의 매개 변수 인 월과 일을 허용합니다. 기능을 호출하는 동안 주문을 따르십시오.

이 함수에서 $ date는 현재 연도와 연결된 입력 날짜입니다.

예 : 년 (12,25)는 2015년 12월 25일로 $ 날짜를 만들 것 달 12 월 (12)와 하루 (25)

년 (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으로 반환합니다.