我正在开发游戏,我需要向玩家展示,他有多少天受到保护。这是我现在的代码:
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!";
}
对于第一个(test)用户reg_date
是1394883070(15.3.2014 11:31)。所以它应该输出
You are protected for 7 days!
但是我得到了
You are protected for 1 days!
任何想法?
你应该这样做:
$days_since_registration = (time() - user::info['reg_date'])/(24*3600)
date()仅对Unix时间戳有用。时间戳的差异是以秒为单位的时间间隔,如果您使用它作为时间戳,则使用1970年的日期或类似的情况。
您设置了$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!";
}
<?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!"
?>