2017-12-28 7 views
1

내가 예를 들어 시작 날짜와 종료 날짜의 날짜 기간 기반 렌더링 할 :날짜 기간 PHP

입력 :

  • 시작 날짜 : 30/12/2017
  • 종료 날짜 : 31/2017/03
  • 간격 :

가 출력 내가 원하는 매월 :

,536,913

function period_days($start_date, $int, $end_date){ 
    $begin = new DateTime($start_date); 
    $end = new DateTime($end_date); 

    $interval = DateInterval::createFromDateString($int); 
    $period = new DatePeriod($begin, $interval, $end->modify('+1 day')); 
    return $period; 
} 
echo period_days('30-12-2017', '1 month', '31-03-2018'); 
:
  • 30/01/2018
  • 30/03/
    1. 30/12/2017

    내 코드를 (이 30 일이없는 때문에 2 월 없습니다)

    결과 반환 잘못된 (3 일 "2018년 3월 30일"이어야 함) :

    "2017-12-30 00:00:00" 
    "2018-01-30 00:00:00" 
    "2018-03-02 00:00:00" 
    

    편집 : 입력에 대한 설명 :

    시작 날짜는 형식은 '31/2천17분의 12 '또는'2018년 1월의 첫 월요일 '또는'세 번째 12월 2017 화요일 '또는 '28 12월 될 수 있습니다 2017 '...

    간격가 될 수있다' 형식 DMY '01 인 일일 ','1 달, '2 개월'일년 '...

    종료 날짜/12/2018 '

    내가 일정을 반복 이벤트, 이벤트 캘린더 플러그인 뭔가를 추가하려면이 기능을 사용, 너희들은 내가 주위에 당신에게 일을 제안 할 수 https://wpshindig.com/events/community/add

  • +0

    무엇이 잘못 되었나요? 날짜 형식? 3 월 3 일 대신 3 월 2 일? 너는 무엇을 시도했다. 실제로 잘못된 점을 발견하기 위해 패턴이 더 많이 생겨나는 것을보기 위해 몇 년 동안 작동하게 했습니까? – JasonB

    +0

    안녕하세요 @ 제이슨 B, 내 질문에 내가 원하는 정확한 출력을 볼 수 있습니다. 대신 30/03/2018을 표시해야합니다. 02/03/2018 (3 번째 결과가 잘못됨) –

    +0

    항상 30일까요? – JasonB

    답변

    1

    에 예를 볼 수 있습니다. DatePeriod가 2 월에 나눠지기 때문에 Year와 month를 얻고 별도로 날짜를 추가 할 수 있습니다. 그러나 이것은 일년에만 일할 것입니다. 예 :

    function periodDays($start_date, $int, $end_date){ 
        $begin = new DateTime($start_date); 
        $end = new DateTime($end_date); 
        $startDay = $begin->format("d"); 
    
        $interval = DateInterval::createFromDateString($int); 
        $period = new DatePeriod($begin, $interval, $end); 
        foreach($period as $date){ 
         echo $date->format("Y-m-") .$startDay. "<br>"; 
        } 
    } 
    
    +0

    기능이 100 % 정확하지 않습니다. 시작 날짜가 31-12-2017 인 경우 잘못 리턴됩니다. 그러나 당신의 생각은 제게 많은 도움이됩니다. 귀하의 기능에서 개발하고 지금 나는 올바른 기능을 가지고 있습니다. 감사!!! –