Как рассчитать возраст в днях и секундах? - PullRequest
0 голосов
/ 04 ноября 2011

Я только что искал, не получил то, что мне нужно.

Я просто хочу перевести возраст в такие дни, как

20123 дней

и в секундах, как

432344344 секунд

. Как мне это сделать?

Если я получу решение по дням, я могу разделить его на несколько секунд.

--- Я ищу решение PHP

Ответы [ 7 ]

2 голосов
/ 04 ноября 2011

PHP

$birthday = '1989-03-06';
$now = date("Y-m-d");
echo 'You are '. date_diff(date_create($birthday), date_create($now))->format('%a days old');
2 голосов
/ 04 ноября 2011
  • В году 365 дней
  • В дне 24 часа
  • В часе 60 минут
  • Минута 60 секунд

Так что вам нужно умножить.

Чтобы узнать, если это скачок, вы можете использовать этот псевдокод:

if year modulo 4 is 0
   then
       if year modulo 100 is 0
           then
               if year modulo 400 is 0
                   then
                       is_leap_year
               else
                   not_leap_year
       else is_leap_year
else not_leap_year
0 голосов
/ 21 февраля 2013

Чтобы быть сверхточным, вам необходимо учесть високосный год:

function get_age($dob_day,$dob_month,$dob_year){
    $year   = gmdate('Y');
    $month  = gmdate('m');
    $day    = gmdate('d');
     //seconds in a day = 86400
    $days_in_between = (mktime(0,0,0,$month,$day,$year) - mktime(0,0,0,$dob_month,$dob_day,$dob_year))/86400;
    $age_float = $days_in_between / 365.242199; // Account for leap year
    $age = (int)($age_float); // Remove decimal places without rounding up once number is + .5
    return $age;
}

, а затем использовать его:

echo get_date(31, 01, 1985);

Вы можете выполнить дополнительную математическую операцию в $ age_float, чтобы конвертировать еев секундах, если вам нужно.

0 голосов
/ 04 ноября 2011

Если вы не слишком беспокоитесь о небольших неточностях (a) , в среднем 365,2425 дней в году и 86 400 секунд в день.


(a) Как только ребенок достигает возраста одного года, уровень ошибок уже упал до максимума 1 / 365 или 0,3%. В моем зрелом возрасте он упал на 0,006%, так что не стоит даже беспокоиться о: -)

0 голосов
/ 04 ноября 2011

Во-первых, вам нужно точно определить дату и время рождения.Я не уверен, что это имеет смысл: младенцам требуется несколько минут, чтобы родиться.

Затем вы переводите дату и время рождения в меру времени (это что-то вроде Unix time_t секунд, измеренных с эпохи, т.е.1 января 1970 0:00 по Гринвичу).

И вы можете получить текущее время в виде time_t

Тогда, подытожив, у вас есть возраст в секундах.

0 голосов
/ 04 ноября 2011

C #

DateTime today = DateTime.Now;
DateTime birthday = new DateTime(year, month, date);
TimeSpan diff = today - birthday;
MessageBox.Show(diff.TotalDays.ToString());
0 голосов
/ 04 ноября 2011

Какой язык программирования?

В C #:

var begin = new DateTime("1970/01/01");
var end = new DateTime("2011/01/01");

TimeSpan diff = end - begin;

var days = diff.Days
var seconds = diff.TotalSeconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...