php时间 3个小时,php – 相对日期格式总是输出“3小时前”

我正在使用php计算指定日期和当前日期之间的日期间隔.我这样做,所以我可以打印社会友好的时间戳,如几分钟前和2小时前

当我来到小时部分时,我得到的东西在php中表现得非常有趣.下面是完整的工作代码,但当您使用此代码替换小时部分时,它总是打印出3个小时.

定义常数DATE

// The current date timestamp

define('DATE', time());

Buggy代码在这里:

//Only the hours part that' doing something weird

case ($interval >= 3600 && $interval < 86400) :

$return = ( date('H', $interval) < 2)

? (int)date('H', $interval) . ' hour ago'

: (int)date('H', $interval) . ' hours ago';

break;

它在指定的日期时断开,假设在这种情况下,创建日期只是一个多小时前因此导致间隔等于3660秒.似乎日期方法调用日期(‘H’,3660)导致03.它不应该导致01吗?毕竟只需一个多小时.

这里的工作代码:

public static function getTimeInterval($date)

{

$interval = DATE - $date;

$return = '';

switch ( $interval )

{

case ($interval <= 60) :

$return = 'a few secs ago';

break;

case ($interval > 60 && $interval < 3600) :

$return = (int)date('i', $interval) . ' mins ago';

break;

case ($interval >= 3600 && $interval < 86400) :

$return = ( abs((date('G', DATE) - date('G', $date))) < 2)

? abs((date('G', DATE) - date('G', $date))) . ' hour ago'

: abs((date('G', DATE) - date('G', $date))) . ' hours ago';

break;

case ($interval >= 86400 && $interval < 604800) :

$return = ( (int)date('j', $interval) === 1)

? (int)date('j', $interval) . ' day ago'

: (int)date('j', $interval) . ' days ago';

break;

case ($interval > 604800 && $interval <= 2592000) :

$return = 'A few weeks ago';

break;

case ($interval > 2592000) :

$return = date('n', $interval) . ' months ago';

break;

case ($interval > 31536000) :

$return = 'Over a year ago';

break;

}

return $return;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值