php - 用php计算年龄
问题描述
嘿伙计们,我正在研究我的同事项目,他使用下面的代码来存储数据库中的年龄并显示年龄
他从选择标签中选择日期和月份。
<?php $today = date("Y");
$year = $today - 18;?>
<select class="form-control" id="date" name="day" >
<option label=01 value=01>01</option>
<option label=02 value=02>02</option>
<option>.......</option>
<option label=30 value=30>30</option>
<option label=31 value=31>31</option>
</select>
<select class="form-control" id="month" name="month" >
January
<option label=January value=01>January</option>
February
<option label=February value=02>February</option>
<option>.......</option>
November
<option label=November value=11>November</option>
December
<option label=December value=12>December</option>
</select>
<select class="form-control" id="year" name="year" >
<?php for($i = 0; $i <= 75; $i++):?>
<option value=<?=$year?>><?=$year?></option>
<?php echo $year = $year -1 ;?>
<?php endfor;?>
</select>
控制器
public function user_register()
{
$data = array(
'u_day'=>$this->input->post('day'),
'month'=>$this->input->post('month'),
'year'=>$this->input->post('year'),
'age'=>$this->getAge($this->input->post('year')),
);
$id = $this->admin_model->insertData('users',$data);
$sess = array(
'userid'=>$id,
'fname'=>$this->input->post('first_name'),
'mname'=>$this->input->post('middle_name'),
'lname'=>$this->input->post('last_name'),
'gender'=>$this->input->post('gender'),
'reg'=>'1',
);
$this->session->set_userdata($sess);
redirect($this->config->item('base_url').'profile/basic_details');
}
public function getAge($then) {
$then_ts = strtotime($then);
$then_year = date('Y', $then_ts);
$age = date('Y') - $then_year;
if(strtotime('+' . $age . ' years', $then_ts) > time()) $age--;
//print_r($age);exit;
return $age;
}
当我选择任何其他日期时,它会完美运行。
但是当我选择 (01/01/2000) 日期时,它将年龄存储在数据库中为 -1
解决方案
通过连接字符串生成出生日期。
$date1 = date_create("2013-03-15"); // generate this by "$date-$month-$year"; // your case
$date2 = date("Y-m-d"); // get today's date
$diff = date_diff($date1,$date2); //here you get the difference
您可以应用数学运算来获得准确的年份和月份。
推荐阅读
- ios - 声明仅在文件范围内有效如何解决?
- r - R从以相同字符串开头的数字创建向量
- android - 按钮单击未重定向到下一页
- javascript - 使用 ng test 运行 Karma 找不到任何要运行的测试
- http - 无法删除资源时所需的 HTTP 响应代码
- python - 自动将现有字段的值添加到自定义字段 [Odoo14]
- spring-webflux - 将两个 Flux 流合并为一个 Flux 的主细节对象
- python-3.x - Python3:如何使用lxml从父元素获取子元素或子元素?
- haskell - stack:为什么要在 base 上进行版本约束?
- html - 使用 HTML 和 Rust 创建覆盖以在直播中显示