首页 > 解决方案 > 如何比较多个日期时间并在一个视图中显示它们?

问题描述

我使用碳来比较两个日期,最初我使用了两个静态变量,一个是$Hnow = now(),另一个$Hlim = Carbon :: Create($year, $month, $day, $hourM, $minute, $second); 比较如下:  

$intervalH = $Hnow-> diffInHours ($Hlim);

好吧,它对我来说非常有效,但现在我必须将它调整到一个数据库,我有几个时间戳,而不是静态 $ Hlim,我有很多日期,这是展示作品的限制。如何将表格中的每个日期与当前日期进行比较并有序显示这些数据?我知道时间戳无法与碳进行比较,因此我先对其进行了转换,但它没有显示任何捕获的日期。

控制器:

<?php

namespace App\Http\Controllers;

use App\pamatrixinf;
use App\Periodicity;
use Illuminate\Http\Request;
use App\Alertnotification;
use Carbon\Carbon;
use DateTime;

use App\pawork;

class fen extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');

    }

    public function index()
    {
        $hour= 14;
        $minute= 0;
        $second=0;
        $year= date("Y");
        $month= date("m");
        $day=date("d");
        $hourM=date("H");
        $dayy= now();

        $dateli=pamatrixinf::select('pamatrixinf.dateen')
        ->where('pamatrixinf.read_at','=',0,'AND')
        ->where('codpaarea', '=', auth()->user()->codarea)
        ->get();
        $datelim= strtotime($dateli);
        $datedif=Carbon::Create($year,$month,$day,$hourM,$minute,$second);
        $dateend= $datedif->addHour();
        $intervalH= $dayy->diffInHours($datelim);
        $intervalM= $dayy->diffInMinutes($dateend);



        return view('fen.index', [

        'Works' => Periodicity::select('paperiodicity.descriptionp','pamatrixinf.description', 'pamatrixinf.codpar')
                ->join('pamatrixinf', 'pamatrixinf.cod_paperiodicity', '=', 'paperiodicity.cod')
                ->where('pamatrizinfoperio.read_at', '=', 0, 'AND')
                ->where('pamatrizinfoperio.codpaarea', '=',auth()->user()->codarea)
                ->get(),
        'Periodores' => $intervalH,
        'Periodoresm' => $intervalM,
        'Hactual' => $dayy,
        'Hlimit' => $datelim


        ]);
    }
}

而我的观点:

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header"><h4>Fenecer</h4></div>

                <div class="card-body">
                    @if (session('status'))
                        <div class="alert alert-success" role="alert">
                            {{ session('status') }}
                        </div>
                    @endif

                    Welcome {{Auth::user()->name}}, the work for today is:
                    @foreach($Works as $work)

            <li class="list-group-item">
            La informacion por mandar llamada
           <p style="color:red;"> <b>{{$trabajo->descripcion}}</b> </p>
           @if($Hactual<$Hlimit)
            is about to end in
            {{$Periodores}} Hours and
            {{$Periodoresm}} Minutes, the limit is {{$Hlimit}} and the date actual is {{$Hactual}}.
           @elseif($Hactual>$Hlimit)
           <p style="color:red;"> <b> It has passed away please we inform the manager. The work died on {{$Hlimit}} and the actual date is {{$Hactual}} </b> </p>
           @endif
   </li>
@endforeach


                </div>
            </div>
        </div>
    </div>
</div>

如您所见,我要做的是在视图中显示小时差($datelim),以便了解每项工作还剩多少时间才能完成交付时间。

标签: laravelphp-carbon

解决方案


更改您的查询,它在下面这样的行,因为您直接传递$dateli包含查询结果的函数,并且strtotime函数需要一个字符串。我希望它有帮助

    $dateli=pamatrixinf::select('pamatrixinf.dateen')
            ->where('pamatrixinf.read_at','=',0,'AND')
            ->where('codpaarea', '=', auth()->user()->codarea)
            ->get()
            ->toArray();
    $datelim= strtotime($dateli[0]['dateen']);

推荐阅读