计算每个月的分钟数(php)

时间:2014-02-04 14:46:38

标签: php date datetime

我需要计算任何一年中任何一个月的分钟数。例如,我想展示2013年,2014年和2015年(以及任何其他年份)1月份有4460分钟,9月份有43200分钟等等。我可能会对此进行硬编码,但问题显然是二月份。如果是闰年,它有41760分钟,如果它没有40320分钟。我想我甚至不确定解决这个问题的最佳方法是什么。也许有日期(" t")和mktime?写一些只会改变2月的东西,如果它是闰年的话?任何指导都表示赞赏。

编辑:根据要求,我尝试过(并失败了)......

$totaldays = date("t", mktime($month));

if $totaldays=31
    $totmin=44640
elseif $totaldays=30
    $totmin=43200
elseif $totaldays=29
    $totmin=41760
else $totaldays=28
    $totmin=40320

4 个答案:

答案 0 :(得分:2)

http://php.net/cal-days-in-month

int cal_days_in_month ( int $calendar , int $month , int $year )

填写参数,并将整数乘以(24 * 60)

示例:

$minutes = (24 * 60) * cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));

答案 1 :(得分:1)

撇开秒,我认为这应该有效:

$datetime = new DateTime('2014-02-01');
$interval = new DateInterval('P1Y');
$period = new DatePeriod($datetime, $interval, 5);
foreach($period as $month) {
    echo $month->format('Y-m-d') . ': ' . $month->format('t') * 1440 . "<br>\n";
}

See it in action

答案 2 :(得分:0)

我不确定你是如何做你的逻辑的 - 用硬编码的值或其他东西,但要检查它是否是闰年,做;

        if( date("L", time() ) { //It's a leap year!
              $intTotalMinute += 41760;
        } else {
              $intTotalMinute += 40320;   
        }

答案 3 :(得分:0)

获取所选年份的分钟数

function getYearMinutes($year) {
    $days = 365 + date('L', strtotime("first day of January $year"));
    return $days * 24 * 60;
}

demo