Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

date

php

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 today.LOGIC: if the current day is less than 15 then the start date of the loop is on the end of the month then if the current day is equal or greater than 15 then the start date of the loop is on the 15th. so in my case my current date is Nov 9 so the First output should be Nov 30.

$y = 1;
while ($y <= $num_term) { // num_term is equal to the number of output
    $month_line = strtotime("15 day", strtotime("$month_sched"));
    $day = date("d", $month_line);
    $month_int = date("M-d", $month_line);
} 

Output:

Nov 24`<br />`
Dec 9`<br />`
Dec 24`<br />`

Could anybody help me... thanks :)

like image 817
zuma Avatar asked Nov 09 '15 06:11

zuma


3 Answers

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;
}
like image 99
Parag Chaure Avatar answered Nov 12 '22 01:11

Parag Chaure


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";
   }
?>
like image 24
Lalji Nakum Avatar answered Nov 12 '22 01:11

Lalji Nakum


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

like image 1
Peter Kota Avatar answered Nov 12 '22 01:11

Peter Kota