douraoyw194498 2016-09-13 00:34
浏览 19
已采纳

在表单中插入的当前日期和生日日期之间的差异

On a form, the user must enter the date of birth. PHP should control if he has already accomplished 18 years.

$birth = $_POST['data_nascita']; 
$str_birth = strtotime ($birth );        

$today = date("m/d/Y");
$str_today = strtotime ($today);                

if($today - $str_today < 567648000) {
    echo'you can't drive a car in Italy because you are underage';exit(); 
}
// 18 years * 31536000 second in 1 year = 567648000

If I put on birth field the date of 14 September 1998 (today is 13 September 2016, so 18 years don't entirely spend yet), the control doesn't work; it works starting from 15 September 1998.

Why I lost 2 days?

  • 写回答

1条回答 默认 最新

  • dongping1922 2016-09-13 02:02
    关注

    I would recommend using the DateTime Class as it has all Date and Time functionality and maths built into it.

    An Example:

    $birth = new DateTime($_POST['date_of_birth']);
    $today = new DateTime('now');
    
    $diff = $birth->diff($today);
    
    if($diff->format('%Y') > 18) {
        echo "Can drive";
    } else {
        echo "Can't Drive";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站