2

在PHP中,如果我有一个datetime对象或者timestamp作为一个对象的属性,我如何才能在PHP中得到一个粗略的记录年龄。

因此,它不是格式化的日期字符串,而是说诸如此类的东西
"about 1 hour ago", "3 days ago", "1 year ago"
例如,有点像 redmine 用于任务评论。

这个过程叫什么?
我尝试搜索年龄并datetime不断寻找代码来获取某人的出生年龄,这不是我想要的。

4

1 回答 1

1

如果你有 2 个对象。您需要将第一个对象转换为时间戳,第二个对象是 time();

time() - 返回以 Unix 纪元(格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来的秒数为单位的当前时间。

然后你用你想要的日期减去 time(),你会得到几秒钟的差异。要从秒中获得分钟,您需要将其除以60,要获得小时,您需要将其除以60 * 60 = 3600等等。

$secondsAgo = time() - $timeStamp;
$minutesAgo= (time() - $timeStamp) / 60; 
$hoursAgo= (time() - $timeStamp) / 60*60;
$daysAgo= (time() - $timeStamp) / 60*60*24;

要将字符串更改为时间戳,您可以使用strtotime()

另一种解决方案是在 DateTime 对象上使用 diff() 。

 $datetime1 = new DateTime('2009-10-11');
 $datetime2 = new DateTime('2009-10-13');
 $interval = $datetime1->diff($datetime2);
 echo $interval->format('%R%a days');

这将返回DateInterval对象,该对象具有许多公共属性

  • y年数。
  • m月数。
  • d天数。
  • h 小时数。
  • i分钟数。
  • 秒数
于 2013-06-04T06:53:14.217 回答