将月份添加到yyyymm格式

时间:2014-04-17 01:50:51

标签: php date addition

我需要为日期格式yyyymm添加一个月。例如。 '201312'将导致'201401'。这是我目前所拥有的,但它无法正常工作。

function addMonth($year_month){
$year_month = (int) $year_month;
if($year_month%100 == 1) {return $year_month-89;}
return $year_month+1;
}

4 个答案:

答案 0 :(得分:3)

如果您使用DateTime()

,这会更容易
function addMonth($year_month){
    $date = DateTime::createFromFormat('Ym', $year_month);
    $date->modify('+1 month');
    return $date->format('Ym');
}

使用DateInterval()

的备选方案
function addMonth($year_month){
    $date = DateTime::createFromFormat('Ym', $year_month);
    $date->add(new DateInterval('P1M'));
    return $date->format('Ym');
}

答案 1 :(得分:0)

如果你想坚持整数,试试:

function addMonth($year_month){
    $year_month = (int) $year_month;
    if($year_month%100 == 12)
        return $year_month+89;
    else
        return $year_month+1;
}

答案 2 :(得分:0)

像John Condes这样的约会时间解决方案可能会更好,但是如果你想为了体验而推出自己的解决方案,那么下面的内容将起作用。

使用div和modulos确保您处于正确的框架中会更好,如果由于某种原因需要添加2个月,您将不会在第13个月结束。

<?
function addMonth($year_month, $add=1){
    $year_month = (int) $year_month + $add;

    $month = $year_month % 100;
    $year = (int)($year_month / 100 + $month / 12) ;

    $month = (int)($month % 12);
    return $year * 100 + $month;
}

print addMonth("200101"); echo "\n";
print addMonth("200101",14); echo "\n";
print addMonth("200112"); echo "\n";
?>

On Codepad this outputs

200102
200203
200201

如果需要,你可以进一步缩短它,但必须小于此开始看起来不可读):

function addMonth($year_month, $add=1){
    $year_month = (int) $year_month + $add;
    $months = $year_month % 100;
    return (int)($year_month / 100 + $months / 12) * 100 + (int)($months % 12);
}

答案 3 :(得分:0)

很多simpeler:

$month = 201712 ;
$nextMonth = date("Ym", strtotime($month . '01 + 1 month'));
echo $nextMonth ;

结果:

201801