【问题标题】:PHP - Use date 'yyyy/mm/dd' to show age, POST data [closed]PHP - 使用日期'yyyy/mm/dd'来显示年龄,POST数据[关闭]
【发布时间】:2015-02-10 23:26:06
【问题描述】:

我正在尝试获取某人生日的发布数据,以发送到另一个页面并显示他们的年龄,到目前为止,我已经有了这个可行的方法

<?php
$c= date('Y');
$y= date('Y', strtotime('1993-12-29'));
echo $c - $y;
?>

但是我将如何处理已发布的数据呢?我试过了:

$c= date('Y');
$y= date('Y',strtotime($_POST['sBirthday']));
echo $c-$y;

虽然这行不通,但有什么想法吗?

【问题讨论】:

  • 用var_dump($_POST['sBirthday']);检查实际值。对于 php,它来自哪里并不重要。重要的是价值。
  • 显示您的表单...您也可以通过 var_dump($_POST) 查看发送的内容...
  • 问题最有可能出现在您的表单中。它是如何使用的,方法,缺少名称属性;可以是任何东西。输入内容需要遵循您所拥有的 1993-12-29 或 19951229
  • PHP calculate age 的可能重复项
  • 19951229 我的意思是19931229,但差别不大。给/拿几年;-)

标签: php html date http-post


【解决方案1】:
  1. 如果该人正确输入,您发布的代码将与相应的 HTML 表单一起使用。例如,如果用户键入1993-12-29,则此表单将起作用:
<form method="post" action="">
  <input type="date" name="sBirthday" />
  <input type="submit" />
</form>
  1. 您的代码实际上并没有计算一个人的年龄。想想,有人出生于 2014-12-31;你会说他是1 岁吗(这是你的代码会计算的)?事实上他是0 岁,因为他还没有活一整年。

    要计算一个人的年龄,请按照here的建议尝试:

$date = new DateTime($_POST['sBirthday']);
$now = new DateTime();
$interval = $now->diff($date);
echo $interval->y;

【讨论】:

  • “例如,如果用户键入1993-12-29,则此表单将起作用” - 19931229 也将起作用 - 它将使用前四个整数。
  • @Fred-ii- 实际上,没有。 manual states DateTime 的构造函数的第一个参数是 'A 日期/时间字符串。 Date and Time Formats.' 中解释了有效格式。可行格式列表不包含您所建议的YYMMDD (19931229)。还是我理解你的评论有误?
  • 我的错,但是我指的是使用 strtotime 而不是你的代码。
猜你喜欢
  • 2013-11-18
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
相关资源
最近更新 更多