我需要知道如何将 unix 时间戳转换为从现在到该时间戳的剩余时间。如果剩下的时间是 1 天,它必须显示 1 天,或者如果是 15 分钟,则显示 %dMin 以此类推,持续一周、几小时、几年、几个月。
目前我使用
$realtime = strftime("%B %d %Y %r",1295058844);
我需要知道如何将 unix 时间戳转换为从现在到该时间戳的剩余时间。如果剩下的时间是 1 天,它必须显示 1 天,或者如果是 15 分钟,则显示 %dMin 以此类推,持续一周、几小时、几年、几个月。
目前我使用
$realtime = strftime("%B %d %Y %r",1295058844);
您可以通过使用 PHP 的DateTime类非常轻松地做到这一点:-
$futureDate = new DateTime('3rd April 2014');
或者
$futureDate = new DateTime();
$futureDate->setTimestamp(1295058844);
你明白了。
$now = new DateTime();
$diff = $futureDate->diff($now);
这将为您提供一个DateInterval对象:-
var_dump($diff);
object(DateInterval)[3]
public 'y' => int 1
public 'm' => int 3
public 'd' => int 0
public 'h' => int 9
public 'i' => int 8
public 's' => int 58
public 'invert' => int 1
public 'days' => int 455
然后你可以做这样的事情: -
echo "Time left = {$diff->y} years, {$diff->m} months, {$diff->d} days, {$diff->h} hours, {$diff->i} minutes, {$diff->s} seconds";
给出:-
剩余时间 = 1 年 3 个月 0 天 9 小时 8 分钟 58 秒
首先获取当前时间戳之间的差异(由 time() 返回):
$timestamp = 1295058844;
$diff = time() - $timestamp;
然后编写一个函数,将结果格式化为天/小时/分钟等。例如,您可以通过将 $diff 除以 1 天的秒数来获得天数:
$days = floor($diff / (60 * 60 * 24));
60 秒 * 60 分钟 * 24 小时。由于这个数字永远不会改变,你可以写:
$days = floor($diff / 86400);
获取剩余秒数并计算小时数、分钟数等。