如何在PHP中获得每月的第15天和最后一天

时间:2015-11-09 06:41:07

标签: php date

我正在试图弄清楚如何将我的日期设置为每个15日和月末...我到目前为止所得到的仅仅是距离我当前日期的+15天。 当前日期= date today.LOGIC:如果当前日期小于15,那么循环的开始日期是月末,那么如果当前日期等于或大于15,则循环的开始日期为开15日。所以在我的情况下,我的当前日期是11月9日,所以第一个输出应该是11月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);
} 

输出:

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

有人可以帮助我......谢谢:)

5 个答案:

答案 0 :(得分:1)

您可以按

获取每月的总天数
<?php
   $a_date = "2015-11-09";
   echo totaldays = date("t", strtotime($a_date));
?>

您可以从当前日期获取当天:

<?php
   echo curday = date('d');
   if(curday==totaldays){
     echo "lastday";
   }
   if(curday==15)
   {
     echo "15th day";
   }
?>

答案 1 :(得分:1)

试试这个

  
      
  1. 查找每月的第一天
  2.   
  3. 找到Lalji Nakum告诉
  4. 的最后一天   
  5. 查看您的日期与月份的第15天一样,例如bellow
  6.   
if($today < $hDay){
    echo 'Start : '. date("t-m-Y");
}else if ($today >= $hDay){
    echo 'Start :'. $hDay;
}
  

下面,   1. $今天将是当前日期,   2. $ hDay将是11月15日这个月的第15天

以下是示例代码

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;
}

答案 2 :(得分:1)

找到第15名:strtotime($month_sched." +14 day");

查找每月的最后一天:strtotime($month_sched." next month - 1 hour");

请尝试以下代码:

<?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++;
}

测试。

PHPFiddle

答案 3 :(得分:1)

您可以使用0和15作为当天值的mktime:

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

这将为您提供上一个月的最后一天和$。月的15.

答案 4 :(得分:0)

这个问题可能有足够多的答案。我也想提供一个答案。

$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
}

参考

PHP手册 - DateTime

PHP手册 - DateInterval

PHP手册 - DatePeriod

PHP手册 - clone