使PHP/MySQL时间戳看起来更有吸引力
因此,基本上,我目前正在从MySQL数据库中选择一个时间戳。在数据库中,时间戳如下所示:使PHP/MySQL时间戳看起来更有吸引力,php,mysql,timestamp,date-formatting,Php,Mysql,Timestamp,Date Formatting,因此,基本上,我目前正在从MySQL数据库中选择一个时间戳。在数据库中,时间戳如下所示: 2010-06-30 12:36:08 显然,对于一个webapp来说,这对用户来说不是很有吸引力。所以,我使用了一些CodeIgniter函数,使它看起来更好一些 <h4 class="timestamp"> <?php // Quickly calculate the timespan $post_date = mysql_to_unix($row->date);
2010-06-30 12:36:08
显然,对于一个webapp来说,这对用户来说不是很有吸引力。所以,我使用了一些CodeIgniter函数,使它看起来更好一些
<h4 class="timestamp">
<?php // Quickly calculate the timespan
$post_date = mysql_to_unix($row->date);
$now = time();
echo timespan($post_date, $now);?> ago
</h4>
以前
如果不使用CodeIgniter,则除了echo timespan()
之外,所有内容都是标准的PHP。CodeIgniter只是将其作为“英语”时间跨度进行了呼应。因此,示例输出为:
2个月、4周、5小时、20分钟前
这一切都很好,但是,我想让它看起来更美好。。。逗号太多,而且有点太长(我知道,我很挑剔…)。我喜欢的是:
7小时33分钟前
2周
Jack这最好在表示层的客户端完成。下面是一个JS解决方案:
<?= date("c", $post_date) ?>
是一个jQuery插件,可以轻松支持自动更新模糊时间戳(例如“4分钟前”或“大约1天前”)
Timeago将在标题中使用Timeago的类和ISO 8601时间戳来打开所有abbr元素:
<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
2008年7月17日
变成这样:
<abbr class="timeago" title="July 17, 2008">about a year ago</abbr>
大约一年前
要将日期转换为ISO 8601格式,可以执行以下操作:
<?= date("c", $post_date) ?>
示例:
您打开此页不到一分钟
一分钟前。(这将在每个月更新。)
等一下
此页面最后修改11天
以前
瑞安出生于31年前
这最好在表示层的客户端完成。下面是一个JS解决方案:
<?= date("c", $post_date) ?>
是一个jQuery插件,可以轻松支持自动更新模糊时间戳(例如“4分钟前”或“大约1天前”)
Timeago将在标题中使用Timeago的类和ISO 8601时间戳来打开所有abbr元素:
<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
2008年7月17日
变成这样:
<abbr class="timeago" title="July 17, 2008">about a year ago</abbr>
大约一年前
要将日期转换为ISO 8601格式,可以执行以下操作:
<?= date("c", $post_date) ?>
示例:
您打开此页不到一分钟
一分钟前。(这将在每个月更新。)
等一下
此页面最后修改11天
以前
瑞安出生于31年前
$ts=new DateTime();
$ts->setTimestamp($my_timestamp);
$cur=新日期时间();
$difference=$cur->diff($ts);
如果($difference->format(“%a”)==0)
$out=$difference->format(“%h小时%i分钟”);
elseif($difference->format(“%a”)<7)
$out=$difference->格式(“%a天”);
elseif($difference->format(“%m”)==0){
$days=$difference->format(“%a”);
$out=sprintf(“%d周%d天”),下限($d/7天),
$days%7);
}
elseif($difference->format(“%y”)==0)
$out=$difference->format(“%m个月”);
其他的
$out=“超过一年”;
如果你不想要像“1天”这样的东西,你必须做一些调整;
$ts->setTimestamp($my_timestamp);
$cur=新日期时间();
$difference=$cur->diff($ts);
如果($difference->format(“%a”)==0)
$out=$difference->format(“%h小时%i分钟”);
elseif($difference->format(“%a”)<7)
$out=$difference->格式(“%a天”);
elseif($difference->format(“%m”)==0){
$days=$difference->format(“%a”);
$out=sprintf(“%d周%d天”),下限($d/7天),
$days%7);
}
elseif($difference->format(“%y”)==0)
$out=$difference->format(“%m个月”);
其他的
$out=“超过一年”;
如果你不想要像“1天”这样的东西,你必须做一些调整。我不知道。只需为自己定制一个我所不知道的实用程序函数(Helper或CI中的某些东西)。只需为自己创建一个自定义实用程序函数(Helper或CI中的某些东西),它非常棒,允许缓存。这很有趣,但它不是一个PHP解决方案。另外,它的措辞方式,不清楚date(“c”,即$post_date)
与任何事情都有什么关系(我甚至以为你说的是输出下面的内容)。@Artefactor:这是因为你没有读Timeago页面。它使用类的timeago
和标题中的ISO 8601时间戳来工作元素。上面的date()。我认为StackOverflow使用了类似的用法:52分钟前
@Bak是的,现在好多了+1这非常好,允许缓存。这很有趣,但它不是一个PHP解决方案。另外,它的措辞方式,不清楚date(“c”,即$post_date)
与任何事情都有什么关系(我甚至以为你说的是输出下面的内容)。@Artefactor:这是因为你没有读Timeago页面。它使用类的timeago
和标题中的ISO 8601时间戳来工作元素。上面的date()。我认为这很有用