【问题标题】:Microtime to Relative Date Conversion微时间到相对日期的转换
【发布时间】:2013-05-15 11:11:26
【问题描述】:

我从数据库中收到以下值,它是毫秒(微时间)值

1369057622.4679

我想在 PHP 中将其输出为

3 天前

基本上读取毫秒值并将其转换为相对日期字符串,任何人都可以提出一个简单的方法来做到这一点。

【问题讨论】:

  • microtime() 给出当前的微时间。如果将两者相减,则得到以微秒为单位的差异。您可以按增量划分以获得天数: $days = floor($diff/1000/60/60/24);我添加了楼层,所以你不会得到 3.1231234213451234912873519875 天。
  • 如果您想要更大的灵活性(不仅仅是显示几天,而是显示几周或几小时,它们更重要),请查找 DateTime::Diff 和生成的 DateInterval 对象。创建对象比简单的除法开销更大,但是您可以使用工具以任何您想要的方式格式化输出。

标签: php microtime relative-date


【解决方案1】:

您可以执行以下操作:

$input = 1369057622.4679;

$diff = floor(($input-time())/86400); // calculating the difference

$result = abs($diff) . (abs($diff)==1 ? ' day ':' days ') . ($diff<=0 ? 'ago':'ahead'); // making the result.
echo $result; // output: 1 day ago

【讨论】:

  • 差异应该基于 microtime(),而不是 time()。用户正在使用的输入以毫秒为单位。 time 函数返回秒。所以,你是从毫秒中减去秒。
  • @kainaw 这正是我第一次看时的想法,但输入不是以毫秒为单位,而是以秒为单位,. 之后的内容被视为毫秒,但由于 OP 想要输出在几天之内,我们可以“降低”该值,因为毫秒部分并不真正相关。尝试做echo time();,结果是~1369138801,和1369057622.4679比较。
猜你喜欢
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
相关资源
最近更新 更多