pas*_*ert 1 php date strtotime date-arithmetic
我知道出生那天,让我们说: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));
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果使用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");
}
Run Code Online (Sandbox Code Playgroud)
编辑:所以现在你有最后一个条目;)
这样的东西,我现在无法测试,但你可以预测这段时间.如果日期是过去的,那么你应该过上一个生日.如果你+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');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |