随机日期显示在视图中

时间:2017-12-01 01:32:56

标签: php laravel date

当我尝试使用<td>{{ date('d-m-Y', strtotime($object->date_expiry)) }} </td>时,为什么我的视图中突然出现了一些随机值。在我的数据库中,我的日期为NULL但在我看来它显示日期01-01-1970,即使它假设为空白。这是一个错误还是什么?

View.blade.php:

@foreach ($data as $object)
<table class="table">
        <tr>
        <th>Date Expiry</th>
        <td>{{ date('d-m-Y', strtotime($object->date_expiry)) }} </td>
    </tr>
</table>
@endforeach

控制器:

        public function gettestInfo($id) {

  $data = test::where('id',$id)->get();

 return view('view',compact('data'));
}

dd($ data)结果:

#original: array:5 [▼
        "id" => 5
        "name" => "test3"
        "date_expiry" => null
        "created_at" => "2017-12-01 01:22:10"
        "updated_at" => "2017-12-01 01:22:10"
      ]

2 个答案:

答案 0 :(得分:2)

日期时间将采用第一个初始日期,如果它为空,则为01-01-1970。

解释:

  

1970年1月1日是所谓的Unix时代。这是他们的日子   开始计算Unix时间。如果你把这个日期作为回报   值,它通常意味着将您的日期转换为Unix   timestamp返回一个(接近)零结果。所以日期转换   没有成功。很可能是因为它收到错误的输入。

改为执行此操作

{{ ($object->date_expiry) ? date('d-m-Y', strtotime($object->date_expiry)) : null }}

它将检查$object->date_expiry是否有值..它执行日期函数,否则返回null

修改

如果你想做if else语句

<td>
    @if($object->date_expiry == something else)
       {{ $object->date_expiry }}
    @elseif($object->date_expiry == something else)
       {{ // code }} 
    @endif
</td>

答案 1 :(得分:0)

因为您要转换具有空值的日期。 试试这个。

{{ ($object->date_expiry) ? date('d-m-Y', strtotime($object->date_expiry)) : null }}