人类时差以月为单位,而不是以天为单位。多么?

时间:2011-12-28 作者:PrivateUser

我在模板中使用以下代码。

<?php echo human_time_diff(get_the_time(\'U\'), current_time(\'timestamp\')) . \' ago\'; ?>
它显示的是2天前,20天前,90天前。

有没有办法显示1周前而不是7天前,1个月前而不是30天前,1年前而不是365天前?

谢谢

3 个回复
最合适的回答,由SO网友:Wyck 整理而成

据我所知,这是wordpress所能做到的最深层次,您必须使用php将其转换为周/月/等。

你有两个选择:

使用human_time_diff 并创建一个只计算差异的函数(很容易计算出7天=1周,等等)。我真的不会用human_time_diff 尽管和使用strtotime() 而是使用此方法。

另一个选项是在php 5.3+中使用DateTime和DateInterval对象。你可以在这里看到一个例子(第二个答案),https://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php

SO网友:Devin Reams

您可以在中看到当前函数wp-includes/formatting.php 而且,正如你所提到的,只会分解为几分钟,然后是几小时,然后是几天。

一个建议是Core Trac 看看是否已经有计划改变这一点。快速搜索human_time_diff 出现了ticket #9272.

不幸的是,它似乎已经停止,您当然可以加入并重新启动对话,或者提供您自己的代码、用例、测试结果等。

或者,您可以简单地创建自己的函数(复制现有函数作为起点),并相应地包装时间戳。

SO网友:prosti

因为我刚刚测试了这段代码,所以在我的博客上有很多文章摘录:

echo $daysago = human_time_diff( get_the_date( \'U\', $pid ), current_time(\'timestamp\'));
我得到了正确的结果:

3 days
1 week
2 weeks
3 weeks
1 month
2 months
6 months
根据documentation:

请检查我是否也使用$pid 表示post ID。看起来函数随着时间的推移有所改进。

结束

相关推荐