我想找出post\\u date和post\\u date\\u gmt之间的时差,最好以小时为单位。
我试过了$age = date_diff(get_post_time(),get_post_time($gmt = true));
但这又回来了
Warning: date_diff() expects parameter 1 to be DateTimeInterface, int given in C:\\xampp\\htdocs\\t\\wp-content\\themes\\i\\single.php on line 23
我真的不理解关于这个函数的官方WP文档-它们是指“时间”还是“时间戳”?
基本原因是我滥用post\\u日期来存储上次更新日期,而gmt字段仍然包含原始发布日期。我知道这是错误的,但我需要一个快速而肮脏的解决方案来解决一个不同的问题。
最合适的回答,由SO网友:Jacob Peattie 整理而成
如果您所需要做的只是检查差异,而不是显示或修改任何内容,那么您不需要对date_diff()
. 您只需比较get_post_time()
对于每个日期。
get_post_time()
返回Unix timestamp 对于日期,它只是自1970年1月1日以来的秒数。因此,如果两个时间戳之间的差值大于86400秒,则差值大于24小时。
$difference = get_post_time( \'U\', true ) - get_post_time( \'U\', false );
if ( $difference > DAY_IN_SECONDS ) {
// GMT date is over 24 hours more than post date.
}
此代码中的“U”表示
get_post_time()
以Unix时间戳形式返回值。这是默认值,但我们需要将其设置为能够设置第二个参数,该参数告诉它是否使用
post_date
或
post_date_gmt
.
在此示例中DAY_IN_SECONDS
是一个WordPress constant 等于86400
. 使用它可以使代码更具可读性,并且您不必在以后找出数字的含义。