给定一个特定DateTime值,我如何显示相对时间,如:
我试图转换格式的时间戳,2009-09-12 20:57:19并将其转换为类似于3 minutes agoPHP的东西.
我找到了一个有用的脚本来做到这一点,但我认为它正在寻找一种不同的格式作为时间变量.我想要修改以使用此格式的脚本是:
function _ago($tm,$rcs = 0) {
$cur_tm = time();
$dif = $cur_tm-$tm;
$pds = array('second','minute','hour','day','week','month','year','decade');
$lngh = array(1,60,3600,86400,604800,2630880,31570560,315705600);
for($v = sizeof($lngh)-1; ($v >= 0)&&(($no = $dif/$lngh[$v])<=1); $v--); if($v < 0) $v = 0; $_tm = $cur_tm-($dif%$lngh[$v]);
$no = floor($no);
if($no <> 1)
$pds[$v] .='s';
$x = sprintf("%d %s ",$no,$pds[$v]);
if(($rcs == 1)&&($v >= 1)&&(($cur_tm-$_tm) > 0))
$x .= time_ago($_tm);
return $x;
}
Run Code Online (Sandbox Code Playgroud)
我认为在前几行中脚本试图做一些看起来像这样的事情(不同的日期格式数学):
$dif = 1252809479 - 2009-09-12 20:57:19;
Run Code Online (Sandbox Code Playgroud)
我如何将我的时间戳转换为(unix?)格式?
我基本上试图将Unix时间戳(time()函数)转换为兼容过去和未来日期的相对日期/时间.所以产出可能是:
2个星期前
1小时60分钟前
15分54秒前
10分15秒后
首先我尝试编写这个代码,但是创建了一个巨大的无法维护的功能,然后我在互联网上搜索了几个小时,但我能找到的只是一部分时间的脚本(呃:"1小时前"没有纪要).
你有一个已经这样做的脚本吗?
我正在使用此查询:SELECT NOW() - 日期AS已过去FROM ...
日期列是TIMESTAMP.当经过的时间约为4小时20分钟时,它返回41632.这不是时间戳.它是什么?
或者有没有更好的方法来获取经过的时间并使用PHP生成如下:"2分钟前""3小时前""昨天22:32"
非常感谢!
我有两个时间戳形成如下: substr( date( 'YmdHisu' ), 0, 17 )
20120921105240000
20120921115626000
Run Code Online (Sandbox Code Playgroud)
现在,我该如何比较它们?
我尝试做一个简单的方法,如:
$diff = abs( 20120921105240000 - 20120921115626000 );
Run Code Online (Sandbox Code Playgroud)
但这并没有给我所需的结果,因为时间混乱了.我想做的就是找出它们之间经过了多少分钟(或几秒钟).
提前致谢.
所以我有这个函数来显示插入的unix格式时间戳(time())生成的时间:
function get_time($timestamp) {
$time = date('G:i', $timestamp);
echo " at: ".$time;
return $time;
}
Run Code Online (Sandbox Code Playgroud)
我想扩展这个功能,并希望这样做,如果它已经24小时,它应该计算和回声"x小时前",如果它昨天或更晚,它应该像现在一样回声(回声"在:".$ time;)..
如何才能做到这一点?