【问题标题】:Changing time format更改时间格式
【发布时间】: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 wordpress


【解决方案1】:

我想你在找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';

【讨论】:

  • 我不知道它的存在!赞一个!
【解决方案2】:

使用这个:

$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

【讨论】:

  • 大声笑 - 我们中的一个人显然误解了,但我实际上不确定是谁:p
【解决方案3】:

我知道你标记了这个 PHP,但你可以使用 javascript 使用 timeago 插件来做到这一点。

&lt;abbr class="timeago" title="2008-07-17T09:24:17Z"&gt;July 17, 2008&lt;/abbr&gt;

转换成

&lt;abbr class="timeago" title="July 17, 2008"&gt;7 years ago&lt;/abbr&gt;

您也需要将时间格式化为 ISO_8601 格式,如下所示:

echo (new DateTime('17 Oct 2008'))-&gt;format('c');

来源:

http://timeago.yarp.com/

How to display a date as iso 8601 format with PHP

【讨论】:

  • 谢谢 =) 我会测试一下,看看它是否适用于我的网站。 =)
  • 我会先看看 Mikk3lRo 的答案 - 我没有意识到 WordPress 有一个现成的功能:)
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多