如何获得时间戳/日期时间对象的粗糙年龄?

时间:2013-06-04 06:50:42

标签: php datetime timestamp

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

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

这个过程叫做什么?
我尝试搜索年龄和datetime并继续寻找代码以获得某人的出生年龄,这不是我想要的。

1 个答案:

答案 0 :(得分:1)

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

  

time() - 返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来秒数测量的当前时间。

然后用你想要的日期减去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 小时数。
  • 分钟数。
  • s 秒数。