PHP之间的日期差异

时间:2014-03-16 18:35:28

标签: php

我正在开发游戏,我需要向玩家展示他受保护多少天。这就是我现在所拥有的:

if(user::loged()){
  $protect = (60*60*24*8) - (time() - user::info['reg_date']);
  $left = date("n",$protect);
  if($left > 0) echo "You are protected for $left days!";
}

首先(测试)用户reg_date是1394883070(15.3.2014 11:31)。所以它应该打印

You are protected for 7 days!

但我明白了

You are protected for 1 days!

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

你应该这样做:

$days_since_registration = (time() - user::info['reg_date'])/(24*3600)

date()仅对unix时间戳有用。时间戳的差异是以秒为单位的时间间隔,如果您将其用作1970年使用日期或类似情况的时间戳。

答案 1 :(得分:1)

您已将$ left设置为月数。

n是一个月的数字表示,没有前导零 - http://php.net/date

我愿意

if(user::loged()){
  $protect = 691200 - (time() - user::info['reg_date']);
  $left = ceil($protect / 86400);
  if($left > 0) echo "You are protected for $left days!";
}

答案 2 :(得分:0)

<?php
   $protect = (60*60*24*8) - (time() - user::info['reg_date']);
   $left = ltrim(date("d",$protect), 0);
   if($left > 0) echo "You are protected for $left days!";
   // Prints "You are protected for 7 days!"
?>