【发布时间】:2015-09-12 14:19:48
【问题描述】:
所以,我有以下 php:
<?php echo get_post_meta($post->ID,'dfd_ModificationTimestamp',true); ?>
它输出日期如下:13/06/2015 11:02:18
我不知道如何将其更改为“3 天前”或“2 个月前”等。
有什么建议吗?
谢谢!
【问题讨论】:
所以,我有以下 php:
<?php echo get_post_meta($post->ID,'dfd_ModificationTimestamp',true); ?>
它输出日期如下:13/06/2015 11:02:18
我不知道如何将其更改为“3 天前”或“2 个月前”等。
有什么建议吗?
谢谢!
【问题讨论】:
我想你在找wordpress功能human_time_diff
例子:
//Get your date
$date = get_post_meta($post->ID,'dfd_ModificationTimestamp',true);
//Convert it to a unix time stamp
$timestamp = strtotime($date);
//Print a nice string showing how long ago that was
echo human_time_diff( $timestamp, current_time('timestamp') ) . ' ago';
【讨论】:
使用这个:
$dateString = get_post_meta($post->ID,'dfd_ModificationTimestamp',true);
/* @var \DateTime $date */
$date = DateTime::createFromFormat('d/m/Y H:i:s', $dateString);
现在 $date 是 DateTime 对象。你可以随意修改。
例如,您需要 3 天前的日期值(13/06/2015 11:02:18)
$date->modify('-3 days'); // $date becomes 10/06/2015 11:02:18
或者如果您需要 2 个月前的日期值 (13/06/2015 11:02:18)
$date->modify('-2 months'); // $date becomes 13/04/2015 11:02:18
要在修改后打印 $date 值,请使用:
echo $date->format('d/m/Y H:i:s');
有关更多自定义信息,请参阅http://php.net/manual/en/class.datetime.php。
【讨论】:
我知道你标记了这个 PHP,但你可以使用 javascript 使用 timeago 插件来做到这一点。
<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
转换成
<abbr class="timeago" title="July 17, 2008">7 years ago</abbr>
您也需要将时间格式化为 ISO_8601 格式,如下所示:
echo (new DateTime('17 Oct 2008'))->format('c');
来源:
【讨论】: