转换php的unixtime标记

时间:2013-01-02 14:27:40

标签: php datetime unix-timestamp

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

目前我使用

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

2 个答案:

答案 0 :(得分:1)

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

$timestamp = 1295058844;

$diff = time() - $timestamp;

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

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

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

$days = floor($diff / 86400);

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

答案 1 :(得分: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秒