我正在尝试创建一个脚本函数,它可以获得一年中每个月的总天数。 我的想法是创建一个过去12个月的报告,我们有可能获得闰年,我的计算不包括这个。 我尝试创建一个代码,该代码映射了除了闰年2月29天之外的所有月份。
这是我的代码:
public function checkMes(){
// ----------------------------------- Verificar se o mes tem 30 ou 31 ou 28 dias -------------
$month = array();
for ($i = -10; $i < 0; $i++)
{
$check_month = date('m');
if($check_month == '01' || $check_month == '03' || $check_month == '05' || $check_month == '07' || $check_month == '08' || $check_month == '10' || $check_month == '12')
{
$month[] = date('m/Y',strtotime('+'.$i.' months + 1 days'));
}elseif($check_month == '02'){
$month[] = date('m/Y',strtotime('+'.$i.' months - 2 days'));
}else{
$month[] = date('m/Y',strtotime('+'.$i.' months'));
}
}
return $month;
}
任何人都可以帮我吗?
[UPDATE]
我需要知道自从我的数据需要计算和报告以来,2月份是29还是28。 如果我在2月29日开始销售,我需要在我的报告中考虑,直到2月28日
答案 0 :(得分:1)
date('t')
为您提供给定月份的天数。
http://php.net/manual/en/function.date.php
所以不用if-elseif-else块,你可以这样做:
$month[] = date('m/Y',strtotime('+'.date('t').' days'));
答案 1 :(得分:1)
您可以使用date("t")
:
<?php
$number_of_days_in_month = date('t');
?>
答案 2 :(得分:0)
这很容易。 创建一个函数,用于计算当前年份是否可被4或400整除,并且不能被100整除。
让我澄清一些脚本代码的含义:
Firts,创建一个小函数来获取当前年份并计算它。它看起来像这样:
public function leap($ano)
{
$leap = false;
if ( (($ano%4) == 0 && ($ano%100) != 0) || ($ano%400) == 0 )
{
$leap = true;
}
return $leap;
}
现在您需要修改当前函数并添加我评论的以下代码:
public function checkMes(){
$ano = date('Y'); //add this line
$this->leap($ano); // add this line
// ----------------------------------- Verificar se o mes tem 30 ou 31 ou 28 dias -------------
$month = array();
for ($i = -10; $i < 0; $i++)
{
$check_month = date('m');
if($check_month == '01' || $check_month == '03' || $check_month == '05' || $check_month == '07' || $check_month == '08' || $check_month == '10' || $check_month == '12')
{
$month[] = date('m/Y',strtotime('+'.$i.' months + 1 days'));
}elseif($check_month == '02'){
if(isset($leap)){ //add this line
$month[] = date('m/Y',strtotime('+'.$i.' months - 1 days')); //add this line
}else{ //add this line
$month[] = date('m/Y',strtotime('+'.$i.' months - 2 days')); //add this line
} //add this line
}else{
$month[] = date('m/Y',strtotime('+'.$i.' months'));
}
}
return $month;
}
希望它可以帮助你。
答案 3 :(得分:0)
我知道在PHP中解决它,你的条件是错误的:
试试这个:
$arr = array(1944, 2011, 2012, 2013, 2014, 1986, 1800, 1900, 2000, 2056);
function leapYear($year){
if(($year % 4) == 0 && ($year % 100) != 0){
return true;
}
else{
return false;
}
}
for($i = 0; $i < count($arr) ; $i++){
$r = leapYear($arr[$i]);
if($r){
echo 'Lepo year: ' . $arr[$i] . '<br>';
}else{
echo 'Not Leap year: ' . $arr[$i] . '<br>';
}
}