我正在使用Lumen构建API。起初,我想稍微解释一下我的工作 位。我的API将为用户提供内容。用户将记录内容 并提交音频长度。 (EX:1分22秒)
我只是把它存放在我的 数据库。当用户想要查看他录制的小时数时,我将返回 总时间。好吧......这就是我创建表格列的原因
$table->decimal('audio_length');
并存储用户发送请求的方式。当用户想要查看总数时 时间我的代码将像:
$point = PointSpeech::where('user_id', Auth::user()->id)->get();
$total_point = 0;
foreach ($point as $value) {
$total_point += $value->points_pending;
}
return response()->json(['status'=> 'Success', 'point_pending' => $total_point], 200);
是的,我知道这是一种愚蠢的方式。现在我正在寻找一种更好的方式来展示它
小时,分钟和秒。嗨,你们能帮帮我吗?请...?
答案 0 :(得分:2)
以这种方式存储持续时间时,应始终转换为要记录的最小单位。在您的情况下,如果您不关心毫秒(或更小),您应该将用户给出的时间转换为秒,例如1分22秒,将是82秒。
这是您应该存储在数据库中的数字。如果你关心较小的单位,如毫秒,那么你应该存储在数据库中。存储整数值。
现在,当您从数据库中提取信息时,您可以执行一个简单的SUM
来获取总秒数(或毫秒)并将其转换回显示给用户。
一旦你有一个表示秒的整数,转换为小时,分钟和秒应该很容易。举个例子:
$seconds = 176; // This would come from your database query
echo (new DateTime('@0'))
->diff(new DateTime("@$seconds"))
->format('%h hours, %i minutes and %s seconds');