你在函數每次輸入日期部分(在input_date)返回錯誤的年齡是優於當天一部分(CURRENT_DATE)。
下面請一個可以幫助的功能。對於任何問題,請讓我知道。
/* By default,
* format is 'us'
* and delimiter is '-'
*/
function date_calculate($input_date, $format = 'us', $delimiter = '-')
{
switch (strtolower($format)) {
case 'us': // date in 'us' format (yyyy/mm/dd), like '1994/03/01'
list($y, $m, $d) = explode($delimiter, $input_date);
break;
case 'fr': // date in 'fr' format (dd/mm/yyyy), like '01/03/1994'
list($d, $m, $y) = explode($delimiter, $input_date);
break;
default: return null;
}
$tz = new \DateTimeZone('UTC'); // TimeZone. Not required but can be useful. By default, server TimeZone will be returned
$format_date = sprintf('%s-%s-%s', $y, $m, $d);
$cur_date = new \DateTime(null, $tz);
$user_date = new \DateTime($format_date, $tz);
$interval = $user_date->diff($cur_date);
return [
'day' => $interval->format('%r%d'),
'month' => $interval->format('%r%m'),
'year' => $interval->format('%r%y'),
];
}
var_dump(date_calculate('19/02/1994', 'fr', '/'));
更多++:
你重新發明輪子:http://uk.php.net/manual/en /datetime.diff.php – 2012-03-09 00:15:39
[在PHP中減去日期]的可能重複(http://stackoverflow.com/questions/3090067/subtracting-dates-in-php) – 2012-03-09 00:16:55