实时计算年龄,并显示在输入文本框上


real time computation of age and display it on input text box

嗨,我有一个时差公式的工作完美后端,但当我运行页面的输入文本框会消失/不会显示在页面上。

<div class="col-md-3">
<?php
$currentdate = date("Y-m-d");
$currenttime = date("h:m:s");
$oDateNow = new DateTime($currentdate);
$oDateBirth = new DateTime($getbirthdate);
$age = $oDateNow->diff($oDateBirth);
?>
<input type="text" name="age" value="<?php echo "$age";?>" class="form-control" placeholder="Age">
</div>

当我删除公式时,输入文本框将显示。

情况是,当用户选择出生日期时,年龄会自动显示在输入文本框上,即输入文本框正好在出生日期的下方。

Javascript
把它放在你的<head></head>元素之间:

<script type="text/javascript">
function getAge(){
    var dob = document.getElementById('date').value;
    dob = new Date(dob);
    var today = new Date();
    var age = Math.floor((today-dob) / (365.25 * 24 * 60 * 60 * 1000));
    document.getElementById('age').value=age;
}
</script>


把这些放到你的<body></body>元素中:

Put birthdate: <input type="text" value="" id="date" name="dob" onblur="getAge();" placeholder="YYYY-MM-DD" /><br />
Your age: <input type="text" id="age" name="age" value="" class="form-control" placeholder="Age">

一旦访问者不再关注日期元素,年龄就会被更新。

$age是一个Datetime对象。要获取字符串版本,您需要执行以下操作:

$age->format('%a days');

所以你的输入字段应该是

<input type="text" name="age" value="<?php echo $age->format('%a days');?>" class="form-control" placeholder="Age">

您的$age = $oDateNow->diff($oDateBirth);提供以下输出:

 DateInterval Object ( [y] => 26 [m] => 11 [d] => 26 [h] => 0 [i] => 0 [s] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 1 [days] => 9857 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 )

如你所见,它是一个对象数组。所以你不能echo that.

如果你想在php中找到Age,那么你可以按照下面的方法来做。

<?php
// $currentdate = date("Y-m-d");
// $currenttime = date("h:m:s");
// $oDateNow = new DateTime($currentdate);
// $oDateBirth = new DateTime($getbirthdate);
// $age = $oDateNow->diff($oDateBirth);
$bday = new DateTime($getbirthdate);
$today = new DateTime(); // use this for the current date
$diff = $today->diff($bday);
//printf('%d years, %d month, %d days', $diff->y, $diff->m, $diff->d);
?>
<input type="text" name="age" value="<?php echo "$diff->y";?>" class="form-control" placeholder="Age">

如果你想看JavaScript的演示请点击这里