【问题标题】:How to get rough age of a timestamp/datetime object?如何获取时间戳/日期时间对象的粗略年龄?
【发布时间】:2013-06-04 06:50:41
【问题描述】:

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

所以它不是格式化的日期字符串,而是显示类似
"about 1 hour ago", "3 days ago", "1 year ago" 等的内容。
有点像 redmine 对任务 cmets 的处理。

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

【问题讨论】:

  • 通常被称为“模糊日期”

标签: php datetime timestamp


【解决方案1】:

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

time() - 返回以 Unix 纪元(格林威治标准时间 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 小时数。
  • i 分钟数。
  • s 秒数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2022-07-08
    • 2014-05-22
    • 2021-06-09
    相关资源
    最近更新 更多