How to get every 15th and last day of the month in PHP

前端 未结 5 1256
执笔经年
执笔经年 2021-01-13 03:21

I am trying to figure out on how to set my dates to every 15th and end of month only...what i\'m getting so far is only +15 days from my current date.. current date = date t

相关标签:
5条回答
  • 2021-01-13 03:43

    find 15th: strtotime($month_sched." +14 day");

    find last day of month: strtotime($month_sched." next month - 1 hour");

    Please try the following code:

    <?php
    $y=1;
    $num_term = 10;
    //start date
    $month_sched = date("2012-02-01");
    while($y <= $num_term) {
        //15th
        $month_line_15 = strtotime($month_sched." +14 day");
        //last day of month
        $month_line_last = strtotime($month_sched." next month - 1 hour");
        $day = date("M-d", $month_line_15);
        $month_int = date("M-d", $month_line_last);
        $month_sched = date("Y-m-d",strtotime($month_sched." +1month"));
        $y++;
    }
    

    Tested.

    PHPFiddle

    0 讨论(0)
  • 2021-01-13 03:45

    Try this

    1. Find the first day of month
    2. Find the Last Day of month as Lalji Nakum told
    3. Check your date with 15th Day of month Like example bellow
    if($today < $hDay){
        echo 'Start : '. date("t-m-Y");
    }else if ($today >= $hDay){
        echo 'Start :'. $hDay;
    }
    

    Here, 1. $today will the current date, 2. $hDay will be the 15th day of the month like 15 Nov

    Here is the sample code

    echo 'First day of month '.
    $fDay = date('01-m-Y');
    echo '<br> 15th day of month '.
    $hDay = date('d-m-Y', (strtotime($fDay)+ (86400 * 15)));
    echo '<br> Last Day of month '.
    $lDay = date("t-m-Y");
    
    echo '<br> Current day '.
    $today = date('d-m-Y');
    //$today =  date('d-m-Y', strtotime($hDay)+86400 );
    echo '<br>'; 
    if($today < $hDay){
        echo 'Start : '. $lDay = date("t-m-Y");
    }else if ($today >= $hDay){
        echo 'Start :'. $hDay;
    }
    
    0 讨论(0)
  • 2021-01-13 03:54

    More than enough answers possible for this one. I would like to contribute an answer as well.

    $beginDate = new DateTime('15 January');
    
    // clone start date
    $endDate = clone $beginDate;
    
    // Add 1 year to start date
    $endDate->modify('+1 year');
    
    // Increase with an interval of one month
    $dateInterval = new DateInterval('P1M');
    
    $dateRange = new DatePeriod($beginDate, $dateInterval, $endDate);
    
    foreach ($dateRange as $day) {
        echo $day->format('Y-m-d')."<br />"; // 15th
        echo $day->format('Y-m-t')."<br />"; // Last month day
    }
    

    References

    PHP Manual - DateTime

    PHP Manual - DateInterval

    PHP Manual - DatePeriod

    PHP Manual - clone

    0 讨论(0)
  • 2021-01-13 04:01

    You can use mktime with 0 and 15 as value for the day:

    $a = date("m-d", mktime(0,0,0,$month,0));
    $b = date("m-d", mktime(0,0,0,$month,15));
    

    This will give you the last day of the previous month and the 15. of $month

    0 讨论(0)
  • 2021-01-13 04:04

    You can get total number of days in month by

    <?php
       $a_date = "2015-11-09";
       echo totaldays = date("t", strtotime($a_date));
    ?>
    

    You can get current day from current date :

    <?php
       echo curday = date('d');
       if(curday==totaldays){
         echo "lastday";
       }
       if(curday==15)
       {
         echo "15th day";
       }
    ?>
    
    0 讨论(0)
提交回复
热议问题