Расчет разницы дат - PullRequest
       9

Расчет разницы дат

0 голосов
/ 18 октября 2018

Я рассчитываю возраст пользователя, вычитая его возраст из сегодняшней даты.Проблема у меня в том, что она показывает их возраст как целое число.Но вместо того, чтобы показывать это как целое число, я бы хотел отобразить его как десятичное, например, 25,5 или 27,3.Я пытался использовать round и number_format, но ни один из них не работал.

$bday = $data->_field_data['node_field_data_field_game_players_nid']['entity']->field_player_birthday['und'][0]['value'];
$now = date("Y/m/d");
$diff = ($now) - date($bday);
echo number_format(round($diff, 2), 2); 

1 Ответ

0 голосов
/ 18 октября 2018

вы можете попробовать это:

$bday = $data->_field_data['node_field_data_field_game_players_nid']['entity']->field_player_birthday['und'][0]['value'];
echo  number_format(round((strtotime(date('Y-m-d')) - strtotime($bday))/(60*60*24*365),2),2);

Однако приведенный выше расчет очень грубый.если вы хотите получить значение более точно, вы должны использовать date_diff для этого:

$bday = $data->_field_data['node_field_data_field_game_players_nid']['entity']->field_player_birthday['und'][0]['value'];
$date1=date_create($bday); //create date object
$date2=date_create(date("Y-m-d")); //create date object
$curyearmaxdays=date("z", mktime(23,59,59,12,31,date("y")))+1; //count of days in the current year
$diff = date_diff($date1, $date2); //difference between two date objects
$realdiff=$diff->y + $diff->m/12+$diff->d/$curyearmaxdays;
echo  number_format(round($realdiff,2),2);
...