根据时间显示不同的时间戳

时间:2014-05-02 作者:Gregory Schultz

基于不同时间显示时间戳的最佳方式是什么?例如:如果帖子不到24小时,请在24小时前显示%%分钟/小时。如果帖子超过24小时,请显示月/日/时间。如果是一年前的帖子,请显示月/日/年/时间。

到目前为止,我已经做到了:

<?php if(get_the_time(\'G\') < 23) {
the_time(\'Y\'); } else {
the_time(\'F j, Y at g:i a\'); } ?>

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

感谢您的回复!这就是解决方案:

<?php
if ( DAY_IN_SECONDS < ( $time = current_time( \'timestamp\' ) ) - ( $time_post = get_the_time( \'U\' ) ) )
    echo human_time_diff( $time_post, $time ) . \' ago\';
elseif ( WEEK_IN_SECONDS < ( $time - $time_post ) )
    the_time( \'D / g:i a\' );
elseif ( YEAR_IN_SECONDS < ( $time - $time_post ) )
    the_time( \'F j / g:i a\' );
else
    the_time( \'F j, Y / g:i a\' ); ?>

SO网友:TheDeadMedic

退房human_time_diff():

if ( DAY_IN_SECONDS < ( $time = current_time( \'timestamp\' ) ) - ( $time_post = get_the_time( \'U\' ) ) )
    echo human_time_diff( $time_post, $time ) . \' ago\';
else
    the_time( \'F j, Y at g:i a\' );
DAY_IN_SECONDS 是WordPress中一个方便的“helper”常量,以及:

  • MINUTE_IN_SECONDS
  • HOUR_IN_SECONDS
  • WEEK_IN_SECONDS
  • YEAR_IN_SECONDS

SO网友:David

此外,如果您想处理天数、小时数等,您可以使用DateTimeDateInterval 对象:

global $post;

$utc       = new DateTimeZone( \'UTC\' );
$post_date = new DateTime( $post->post_date_gmt, $utc );
$now       = new DateTime( \'now\', $utc );
$diff      = $post_date->diff( $now );
$diff 现在是DateInterval 具有以下属性的对象:

object(DateInterval)#4 (8) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(2)
  ["d"]=>
  int(16)
  ["h"]=>
  int(19)
  ["i"]=>
  int(29)
  ["s"]=>
  int(59)
  ["invert"]=>
  int(0)
  ["days"]=>
  int(75)
}

结束

相关推荐

UPDATE_POST_META不添加任何内容。(也不添加_POST_META)

因此,我制作了某种导入器(从另一个非WP db到我的WP db),只需点击一个按钮即可处理所有事情。现在它确实正确地创建了一个post类型,尽管我必须在其中放置另一个DB的ID的一个用ACF创建的自定义字段没有正确填充,我是根据update_post_meta. 现在我不知道问题是什么,因为当我查看Wordpress数据库时,它显示它正确地将其添加到数据库中,但它没有添加(更好地说是显示)WP Admin中的自定义帖子。这是我使用的代码:<form action=\"\" method=\"post