我有一个包含 ID、姓名、电子邮件和日期的数据库。日期字段是使用 now() 填充的。
我可以使用 PHP 将这些记录输出到屏幕。那里没有问题。但是,我想要一个额外的列来显示一个人注册的时间。如何从现在开始减去 mysql 中输入为 now() 的日期列。
这是我到目前为止所拥有的,但它对我不起作用:
$date = $row['date'];
$now = new DateTime();
echo $date->diff($now)->format("%d days, %h hours and %i minuts");
所以我最终会得到类似的结果:
id.....姓名......电子邮件......日期注册...... .length reg 1......迈克尔·克拉克......mclarke@gmail.com......11/02/2016......2天5小时2分钟
谢谢,安迪;-)
最佳答案
$row['date']
是一个字符串,而不是 DateTime
对象,因此您无法在非对象上调用 diff
。解决这个问题,你的代码就很好了
$date=DateTime::createFromFormat("Y-m-d H:i:s", "2015-12-01 12:56:32");
$now = new DateTime();
echo $date->diff($now)->format("%d days, %h hours and %i minutes");
我使用了 Y-m-d H:i:s
因为这是 NOW()
使用的格式,因此您的日期时间必须按此存储。但是,如果您的字段仅为 DATE
类型,而不是 DATETIME
,您只需将格式标识符更改为 "Y-m-d"
输出
10 days, 3 hours and 1 minutes
<强> Fiddle
关于php - 在 php 计算中使用 mysql now(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343864/