流明数据存储为小时分钟和秒格式

时间:2018-01-29 19:00:34

标签: php laravel lumen

我正在使用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);
是的,我知道这是一种愚蠢的方式。现在我正在寻找一种更好的方式来展示它    小时,分钟和秒。嗨,你们能帮帮我吗?请...?

1 个答案:

答案 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');