我在数据库中定义了一个值为mediumint(11)。目前,如果我运行查询,它将返回3600。
此函数应将该值转换为:1小时。但是当我运行该功能时它不会。我没有价值。
function strTime($s) {
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;
if ($d) $str = $d . 'd ';
if ($h) $str .= $h . 'h ';
if ($m) $str .= $m . 'm ';
if ($s) $str .= $s . 's';
return $str;
}
非常基本,必须是db中的值?
调用此代码的代码(特定于Joomla):
$query = "SELECT streaming_limit FROM #__cc_users WHERE user_id=".$user->id;
$db->setQuery($query);
$steaming_limit = $db->loadResult(); //returns 3600
echo strTime($streaming_limit); //returns nothing
答案 0 :(得分:1)
更强大的方法是PHP的DateTime
和DateInterval
类,它们专门用于此类事情。
下面的代码创建两个DateTime对象,添加指定的秒数
到一个对象,然后计算两者之间的间隔。
此时,您可以格式化时差,但是您可以使用DateInterval::format
function strTimeDiff($seconds)
{
$date1 = new DateTime();
$date2 = new DateTime();
$date2->add(new DateInterval('PT'.$seconds.'S'));
$interval = $date1->diff($date2);
echo $interval->format('%d days, %h hours, %i minutes, %s seconds');
}
$secs_from_db = 3600;
echo strTimeDiff($secs_from_db);
// 0 days, 1 hours, 0 minutes, 0 seconds
答案 1 :(得分:0)
您可以尝试使用以下内容:
"将秒数转换为分别包含小时,分钟和秒的数组"
来自http://codeaid.net/php/convert-seconds-to-hours-minutes-and-seconds-%28php%29
<?php
/**
* Convert number of seconds into hours, minutes and seconds
* and return an array containing those values
*
* @param integer $seconds Number of seconds to parse
* @return array
*/
function secondsToTime($seconds)
{
// extract hours
$hours = floor($seconds / (60 * 60));
// extract minutes
$divisor_for_minutes = $seconds % (60 * 60);
$minutes = floor($divisor_for_minutes / 60);
// extract the remaining seconds
$divisor_for_seconds = $divisor_for_minutes % 60;
$seconds = ceil($divisor_for_seconds);
// return the final array
$obj = array(
"h" => (int) $hours,
"m" => (int) $minutes,
"s" => (int) $seconds,
);
return $obj;
}