如何将 blade 视图的列时间属性更改为 AM 和 PM?

How can I change a column time attribute to AM and PM for the blade view?

我有一个名为 time_entries 的 table,列名是 time_start

我在上面插入 Carbon::now();。列中存储的数据是 2021-08-26 09:51:37blade.php 显示相同的结果。

型号TimeEntry:

namespace App\Models;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class TimeEntry extends Model
{
    use HasFactory;

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function getTimeStartAttribute($value)
    {
        return Carbon::createFromFormat('H:i:s', $value)->TimeString();
    }
}

控制器:

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\TimeEntry;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AttendanceController extends Controller
{
    public function index()
    {
        $data = TimeEntry::where('user_id', Auth::user()->id)->paginate(2);

        return view('Admin.Attendance-History-page', compact('data'));
    }
}

Blade 视图:

<tbody id="table_data">
    @foreach ($data as $punch)
        <tr>
            <td>{{ $punch->user->name }}</td>
            <td>{{ $punch->user->employee_id }}</td>
            <td>19 Feb 2019</td>
            <td>{{ $punch->time_start }} </td>
            <td>{{ $punch->time_end }}</td>
            <td>9 hrs</td>
            <td>
                <span class="badge bg-inverse-success">Perfect</span>
            </td>
            <td>0</td>
        </tr>
    @endforeach
</tbody>

我想知道如何将 2021-08-26 09:51:37 的输出格式化为 Blade 中的 09:51:AM 之类的格式?

感谢您的帮助。

使用 PHP date() 方法可以直接解决此问题。

{{ date('h:m A', strtotime($punch->time_start)) }}

这将输出 09:51 AM

如果你想输出09:51:AM那么只需要在m之后添加:并移除space,像这样:

{{ date('h:m:A', strtotime($punch->time_start)) }}