秒到分钟:从 MySQL 到 Smarty 的秒


seconds to minute:seconds from mysql to smarty

我有这个查询

$result = select_query("tblemails", "", array("userid" => $userid), "id", "DESC", "0,5");
$lastfivemail = array();
while ($data = mysql_fetch_array($result))
{
$lastfivemail[] = array("id" => $data["id"], "processtime" => $data["processtime"], "date" => frommysqldate($data["date"], "time"), "subject" => $data["subject"] ? $data["subject"] : "No Subject");
continue;
}
$templatevars["lastfivemail"] = $lastfivemail;

而这个

"processtime" => $data["processtime"]

带来在几秒钟内发送电子邮件所花费的时间。

我需要以一分钟:秒格式显示它。

这是聪明的一面

<div class="clientssummarybox">
<div class="title">{$_ADMINLANG.clientsummary.emailsheading}</div>
<table class="clientssummarystats" cellspacing="0" cellpadding="2">
{foreach key=num from=$lastfivemail item=email}
<tr class="{cycle values=",altrow"}"><td align="center">{$email.date} - <a href="#" onClick="window.open('clientsemails.php?&displaymessage=true&id={$email.id}','','width=650,height=400,scrollbars=yes');return false">{$email.subject}</a></td><td>{$email.processtime}</td></tr>
{foreachelse}
<tr><td align="center">{$_ADMINLANG.clientsummary.noemails}</td></tr>
{/foreach}
</table>
</div>
</td><td width="25%" valign="top">

谢谢

使用 Smarty 2 及更高

版本,您可以使用

{$email.processtime|date_format:'%H:%M:%S'}

请参阅此处的参考资料

不是最优雅的,但:

$t = $data["processtime"];
$mins = floor($t/60); 
$secs = $t%60; 
$data["processtime"] = sprintf("%02d:%02d",$mins,$secs);

我最近使用了一个"仅智能"解决方案来解决将秒转换为更具可读性的 H:M:S 格式的问题。假设您有一个可变$seconds

{assign var='duration' value='%02d:%02d:%02d'}
Duration: {$seconds|sprintf:floor($seconds/3600):(($seconds/60)%60):$seconds}