gpt4 book ai didi

PHP:从时间戳生成相对日期/时间

转载 作者:IT王子 更新时间:2023-10-29 01:14:41 25 4
gpt4 key购买 nike

我基本上是在尝试将 Unix 时间戳(time() 函数)转换为与过去和 future 日期兼容的相对日期/时间。所以输出可能是:

2 weeks ago

1 hour and 60 minutes ago

15 minutes and 54 seconds ago

after 10 minutes and 15 seconds

首先,我尝试对此进行编码,但产生了一个巨大的无法维护的功能,然后我在互联网上搜索了几个小时,但我所能找到的都是只产生一部分时间的脚本(例如:“1 小时前”,没有 session 记录)。

您是否有已经执行此操作的脚本?

最佳答案

此功能可在“现在”和“特定时间戳”之间为您提供“1 小时前”或“明天”之类的结果。

function time2str($ts)
{
if(!ctype_digit($ts))
$ts = strtotime($ts);

$diff = time() - $ts;
if($diff == 0)
return 'now';
elseif($diff > 0)
{
$day_diff = floor($diff / 86400);
if($day_diff == 0)
{
if($diff < 60) return 'just now';
if($diff < 120) return '1 minute ago';
if($diff < 3600) return floor($diff / 60) . ' minutes ago';
if($diff < 7200) return '1 hour ago';
if($diff < 86400) return floor($diff / 3600) . ' hours ago';
}
if($day_diff == 1) return 'Yesterday';
if($day_diff < 7) return $day_diff . ' days ago';
if($day_diff < 31) return ceil($day_diff / 7) . ' weeks ago';
if($day_diff < 60) return 'last month';
return date('F Y', $ts);
}
else
{
$diff = abs($diff);
$day_diff = floor($diff / 86400);
if($day_diff == 0)
{
if($diff < 120) return 'in a minute';
if($diff < 3600) return 'in ' . floor($diff / 60) . ' minutes';
if($diff < 7200) return 'in an hour';
if($diff < 86400) return 'in ' . floor($diff / 3600) . ' hours';
}
if($day_diff == 1) return 'Tomorrow';
if($day_diff < 4) return date('l', $ts);
if($day_diff < 7 + (7 - date('w'))) return 'next week';
if(ceil($day_diff / 7) < 4) return 'in ' . ceil($day_diff / 7) . ' weeks';
if(date('n', $ts) == date('n') + 1) return 'next month';
return date('F Y', $ts);
}
}

关于PHP:从时间戳生成相对日期/时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2690504/

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