[РЕШЕНО] Проблема с выводом возраста пользователя

Главные вкладки

Аватар пользователя iloveny iloveny 29 октября 2013 в 2:25

Для вывода возраста пользователя делал все статье

Задача: в профайл пользователя добавить поле возраст.
Решение:
Поле будем делать динамически-рассчитываемым. В качестве профиля пользователя используется Profile2.
Дополнительно нам понадобятся:
Date (для формирования поля даты и реализации календаря)
Computed fields (само поле возраст)
Установка и настройка
Модули ставятся, как обычно. В модуле Date обратите внимание на часовой пояс по умолчанию и форматы даты.
В профиль пользователя добавляем новое поле "Дата рождения" типа "Date" называем его field_profile_birthdate указываем виджет "выпадающий календарь".
Таким образом получаем поле для ввода даты рождения. От него мы будем плясать при расчёте возраста.
Дальше создаём поле "Возраст" типа "Computed" и именем field_profile_birthdate тип виджета один - computed.
В настройках поля "возраст":
Computed Code (PHP)
$entity_field[0]['value'] Sad time() - strtotime($entity->field_profile_birthdate[LANGUAGE_NONE][0]['value']) ) / 86400 / 365.25;
Display Code (PHP)
$display_output = $entity_field_item['value'];

Но есть проблема после возраста выводятся и какие то другие цифры к примеру если возраст пользователя 22, то выводится 22.540572553046. Как можно решить эту проблему?

Комментарии

Аватар пользователя sg85 sg85 29 октября 2013 в 3:15

Способ у Вас, мягко говоря странный, однако, если проблема именно в 22.540572553046, то можно превратить float в integer, $display_output = (integer)$entity_field_item['value']; Однако, все равно возможны редкие небольшие ошибки с определением возраста.

Можно было бы сделать так:
$entity_field[0]['value'] = date_diff(date_create($entity->field_profile_birthdate[LANGUAGE_NONE][0]['value'],date_create())->format('%y');
правда для этого версия пыха должна быть >= 5.3

Аватар пользователя sergeybelya sergeybelya 29 октября 2013 в 11:40

Способ действительно странный. Ставите модуль Date, в поле даты вводим дату рождения пользователя, в настройках отображения поля выбираем "Назад", интервал - 1.

Аватар пользователя iloveny iloveny 30 октября 2013 в 23:20

sergeybelya wrote:
Способ действительно странный. Ставите модуль Date, в поле даты вводим дату рождения пользователя, в настройках отображения поля выбираем "Назад", интервал - 1.

Спасибо большое, все получилось!