如何编写整洁的代码以获取上次生日?

Pascalvgemert

我知道出生的日子,可以说:1996-12-12
我知道今天是:2014-11-12

现在,我想获取上个生日的日期。而且我已经编写了此解决方案,但我不喜欢代码的复杂性。如何使其他程序员更易读?

$lstrBirthday       = '1996-12-12';
$lstrLastBirtday    = (strtotime(date('Y').date('-m-d', strtotime($lstrBirthday))) > strtotime('now')) ? (date('Y') - 1).date('-m-d', strtotime($lstrBirthday)) : date('Y').date('-m-d', strtotime($lstrBirthday));

谢谢!

勒内洞穴

如果使用DateTime函数,则更容易

$begin = new DateTime( '1996-12-12' );
$end = new DateTime();
$end = $end->modify( '-1 day' ); 

$interval = new DateInterval('P1Y');
$daterange = new DatePeriod($begin, $interval ,$end);

$bd = '';

foreach($daterange as $date){
    $bd = $date->format("Ymd");
}

编辑:所以现在您有了最后一个条目;)

像这样的东西我现在无法测试,但是您可以在这段时间内进行测试。如果日期是过去的日期,则应该是最后一个生日。如果您+1 year将来能做到这一点。

编辑:对于@pascalvgemert,也许它对您来说更具可读性...

public function getLastBirthdate($startDate) {
    $begin = new DateTime( $startDate );
    $end = new DateTime();
    $end = $end->modify( '-1 day' ); 

    $interval = new DateInterval('P1Y');
    $daterange = new DatePeriod($begin, $interval ,$end);

    $bd = '';

    foreach($daterange as $date){
        $bd = $date->format("Ymd");
    }

    return $bd;
}

$lastBD = getLastBirthdate('1996-12-12');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章