-3

我需要知道如何将 unix 时间戳转换为从现在到该时间戳的剩余时间。如果剩下的时间是 1 天,它必须显示 1 天,或者如果是 15 分钟,则显示 %dMin 以此类推,持续一周、几小时、几年、几个月。

目前我使用

$realtime = strftime("%B %d %Y %r",1295058844);
4

2 回答 2

1

您可以通过使用 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 秒

于 2013-01-02T15:02:57.770 回答
1

首先获取当前时间戳之间的差异(由 time() 返回):

$timestamp = 1295058844;

$diff = time() - $timestamp;

然后编写一个函数,将结果格式化为天/小时/分钟等。例如,您可以通过将 $diff 除以 1 天的秒数来获得天数:

$days = floor($diff / (60 * 60 * 24));

60 秒 * 60 分钟 * 24 小时。由于这个数字永远不会改变,你可以写:

$days = floor($diff / 86400);

获取剩余秒数并计算小时数、分钟数等。

于 2013-01-02T14:36:02.920 回答