如何防止 php 中的两个时间变量显示它们的总值相同?
How to keep two time variables in php from showing their total identical value?
我有一个排行榜,可以跟踪在我的游戏服务器上玩的时间。它在当前格式下 100% 有效,但是我想让 "days" 测量更具体,但我不确定如何做。这是我们正在处理的全职功能:
function NiceTimeFormat( $seconds ) {
$mins = floor( $seconds / 60 );
$hours = floor( $mins / 60 );
$days = floor( $hours / 24 );
if ( $days > 0 ) {
return $days." Days";
}
if ( $hours > 0 ) {
return $hours." Hours";
}
if ( $mins > 0 ) {
return $mins." Mins";
}
return $seconds." Seconds";
}
现在这里发生的是检查(在本例中为 mysql)数据库,了解玩家有多少秒。它以秒为单位测量,然后从那里上升,这解释了 $mins、$hours 和 $days 语句。分钟和小时报表可以像现在一样保持不变,但是我想为玩了超过一天的玩家添加一个 "leftover hours" 测量值。
现在我不想成为明显的队长,但当然代码不会简单地这样做,如果我只是:
if ( $days > 0 ) {
return "{$days} days and {$hours} hours";
}
这是我最终得到的,但也是我想要的确切布局:http://i.imgur.com/U2fJ5V2.png 唯一明显的问题当然是,它基本上只是说明玩家有多少天,以及多少天玩家拥有的小时数,如果您关注我,则两者的 'time' 数量相同。我想做的就是让它成为剩下的时间。所以如果玩家有 27 小时,它会说“1 天 3 小时”,而不是我目前得到的“1 天 27 小时”,这当然是不正确的。
假设我有一个 $hoursleftover 或 $leftover 语句来定义他们的剩余时间(以小时为单位),我该怎么做呢?提前致谢。
你必须做减法。 24*60*60 = 86400
$days = floor( $seconds / 86400 );
$seconds = $seconds - $days*86400;
$hours = floor( $seconds / 3600 );
$seconds = $seconds - $hours *3600;
$mins = floor( $seconds / 60 );
$seconds = $seconds - $mins * 60;
您要的是...模数!我相信的神奇%。
给定一组秒数,这是我建议你做的:
<?php
$s = '134324';
$seconds = $s%60;
$s = $s - $seconds;
$minutes = ($s%3600)/60;
$s = $s -$minutes*60;
$hours = ($s%86400)/3600;
$s = $s -$hours*3600;
$days = $s/86400;
echo $days.' Days ' .$hours.' Hours '.$minutes.' Minutes '.$seconds.' Seconds';
?>
我已经使用 php 的 time()
设置了一个工作示例 here
我有一个排行榜,可以跟踪在我的游戏服务器上玩的时间。它在当前格式下 100% 有效,但是我想让 "days" 测量更具体,但我不确定如何做。这是我们正在处理的全职功能:
function NiceTimeFormat( $seconds ) {
$mins = floor( $seconds / 60 );
$hours = floor( $mins / 60 );
$days = floor( $hours / 24 );
if ( $days > 0 ) {
return $days." Days";
}
if ( $hours > 0 ) {
return $hours." Hours";
}
if ( $mins > 0 ) {
return $mins." Mins";
}
return $seconds." Seconds";
}
现在这里发生的是检查(在本例中为 mysql)数据库,了解玩家有多少秒。它以秒为单位测量,然后从那里上升,这解释了 $mins、$hours 和 $days 语句。分钟和小时报表可以像现在一样保持不变,但是我想为玩了超过一天的玩家添加一个 "leftover hours" 测量值。
现在我不想成为明显的队长,但当然代码不会简单地这样做,如果我只是:
if ( $days > 0 ) {
return "{$days} days and {$hours} hours";
}
这是我最终得到的,但也是我想要的确切布局:http://i.imgur.com/U2fJ5V2.png 唯一明显的问题当然是,它基本上只是说明玩家有多少天,以及多少天玩家拥有的小时数,如果您关注我,则两者的 'time' 数量相同。我想做的就是让它成为剩下的时间。所以如果玩家有 27 小时,它会说“1 天 3 小时”,而不是我目前得到的“1 天 27 小时”,这当然是不正确的。
假设我有一个 $hoursleftover 或 $leftover 语句来定义他们的剩余时间(以小时为单位),我该怎么做呢?提前致谢。
你必须做减法。 24*60*60 = 86400
$days = floor( $seconds / 86400 );
$seconds = $seconds - $days*86400;
$hours = floor( $seconds / 3600 );
$seconds = $seconds - $hours *3600;
$mins = floor( $seconds / 60 );
$seconds = $seconds - $mins * 60;
您要的是...模数!我相信的神奇%。
给定一组秒数,这是我建议你做的:
<?php
$s = '134324';
$seconds = $s%60;
$s = $s - $seconds;
$minutes = ($s%3600)/60;
$s = $s -$minutes*60;
$hours = ($s%86400)/3600;
$s = $s -$hours*3600;
$days = $s/86400;
echo $days.' Days ' .$hours.' Hours '.$minutes.' Minutes '.$seconds.' Seconds';
?>
我已经使用 php 的 time()
设置了一个工作示例 here