gpt4 book ai didi

php - 相对日期格式始终输出 "3 hours ago"

转载 作者:可可西里 更新时间:2023-11-01 00:01:10 24 4
gpt4 key购买 nike

我正在使用 php 计算指定日期和当前日期之间的日期间隔。我这样做是为了打印出社交友好的时间戳,例如 几分钟前2 小时前

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

定义常量DATE

// The current date timestamp
define('DATE', time());

错误代码在这里:

//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 秒。似乎日期方法调用 date('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;

}

最佳答案

date() 的结果取决于您所在的时区。您可以通过 date_default_timezone_set() 手动设置时区来更改此行为

关于php - 相对日期格式始终输出 "3 hours ago",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6502676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com