Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php将时间段转换为数字_Php - Fatal编程技术网

php将时间段转换为数字

php将时间段转换为数字,php,Php,我有一个数据库,将一个人的出生日期和当前日期进行比较,以获得该人在给定时间的年龄 我使用以下代码将它们转换为年龄 $datetime_date = date("d-m-Y"); $time_diff = abs(strtotime($datetime_date) - strtotime($birthdate)); $years = floor($time_diff / (365*60*60*24)); $months = floor(($time_diff - $years * 365*6

我有一个数据库,将一个人的出生日期和当前日期进行比较,以获得该人在给定时间的年龄

我使用以下代码将它们转换为年龄

$datetime_date = date("d-m-Y");

$time_diff = abs(strtotime($datetime_date) - strtotime($birthdate));

$years = floor($time_diff / (365*60*60*24));

$months = floor(($time_diff - $years * 365*60*60*24) / (30*60*60*24));

$days = floor(($time_diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

if ($years > 0) {$new_age = "$years year $months month";}

elseif (($years == 0) && ($months > 0)) {$new_age = "$months month $days day";}

elseif (($years == 0) && ($months == 0)) {$new_age = "$days day of life";}
我已将数据库中的年龄保存为: 数字年份数字月份或 数月数天或 天数

目前,我想把它们分为年龄组,所以我需要将它们转换回数字进行比较

例如: 年龄<1岁的群体 1-12岁年龄组 12-60岁等年龄组


有人能建议如何将时间段中的年龄转换回数字格式或unix格式以便于比较吗?

您可以将字段转换回秒

$new_age_split = explode(" ",$new_age);

if ($new_age_split[1] == 'year')
{
$age = (($new_age_split[0] * 365) + ($new_age_split[2] * 30) + $new_age_split[4]) * 24*60*60
}
else
{
if ($new_age_split[1] == 'month')
{
$age = (($new_age_split[0] * 30) + $new_age_split[2] ) * 24*60*60
}
else
if ($new_age_split[1] == 'day')
{
$age = ($new_age_split[0]) * 24*60*60
}
然后,您可以使用新的DateTimedateU-$age或date_createdateU-$age,具体取决于您需要对输出执行的操作

使用和类;它们使您的任务更容易:

$birthdate = new DateTime('1997-09-14');
$today     = new DateTime('now');
$diff = $today->diff($birthdate);

echo('Age: '.$diff->y."\n");
print_r($diff);

还请注意,我意识到我可以将$time_diff存储在数据库中,并将其用于比较。我计划将来使用它。然而,我已经有很多以上提到的时间段格式的数据,并且正在寻找系统将它们重新转换为timestringit的方法,这是正确的,但是现在的数据是varchar格式的,例如:3年4个月。当然,我可以通过单词year之前的subs number和单词year&month之间的number of month来解析字符串。然而,这是相当乏味的。我想知道是否有更简单的方法?我已经更新了答案。。但是你可能需要删除第一个if语句new_age_split[4]中的日期,因为看起来你没有保存这些信息。