Laravel-5.5:在哪里可以使用 if 以所需格式显示日期?
Laravel-5.5: Where I can use my if's for display date in needed format?
我的数据库中有消息。并且在消息中有发送日期。我有 Message 模型。
代码:
<?php
namespace App;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Message extends Model
{
protected $fillable = ['id', 'subject', 'message', 'from', 'to', 'created_at'];
public function sender() {
return $this->belongsTo(User::class, 'from');
}
public function receiver() {
return $this->belongsTo(User::class, 'to');
}
public function getCreatedAtAttribute($date)
{
return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('M d H:i');
}
}
如何以日期格式显示今天发送的消息 H:i
。以及如何以日期格式 M-d
显示今年发送的所有消息(没有今天发送的消息)。以及如何以日期格式显示过去几年发送的消息 Y-m-d
。我必须在哪里编写检查消息日期和 return 所需格式的代码?
这是我获取日期差异的代码:
echo $today = date('Y-m-d H:i:s');
echo $message_date = "2018-01-07 01:34:35"; // Work date('H:i')
// $message_date = "2017-01-07 01:34:35"; // Work date('Y-m-d')
// $message_date = "2017-12-07 01:34:35"; // Work date('M d')
$date_diff = date_diff(date_create($today), date_create($message_date));
if($date_diff->days == 0) echo '<p>'.date('H:i').'</p>';
if($date_diff->y == 0 AND $date_diff->m > 0) echo '<p>'.date('M d').'</p>';
if($date_diff->y > 0) echo '<p>'.date('Y-m-d').'</p>';
我在 Laravel 中写了简单的代码,但它不起作用结束 return "Not working!"
public function getCreatedAtAttribute($date)
{
$today = date_create(date('Y-m-d H:i:s'));
$message_date = date_create($date);
$date_diff = date_diff($today, $message_date);
if($date_diff->days == 0) return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('H:i');
if($date_diff->y == 0 AND $date_diff->m > 0) return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('M d');
if($date_diff->y > 0) return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
return "Not working!";
}
首先,您不应该为 created_at
日期设置访问器以将其转换为字符串。删除访问器或重命名它。
How I can display today sended messages in date format H:i
.
获取消息:
Message::whereDate('created_at', Carbon::today())->get();
And how I can display all messages which sended in this year (without today sended messages) in date format M-d
Message::whereBetween('created_at', [now()->startOfYear(), Carbon::yesterday()->endOfDay()])->get();
And how display sended messages in past years in date format Y-m-d.
Message::where('created_at', '<', now()->startOfYear())->get();
要在 Blade 模板中显示消息,请使用 format()
,例如:
@foreach ($messages as $message)
{{ $message->created_at->format('H:i') }}
@endforeach
我的数据库中有消息。并且在消息中有发送日期。我有 Message 模型。
代码:
<?php
namespace App;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Message extends Model
{
protected $fillable = ['id', 'subject', 'message', 'from', 'to', 'created_at'];
public function sender() {
return $this->belongsTo(User::class, 'from');
}
public function receiver() {
return $this->belongsTo(User::class, 'to');
}
public function getCreatedAtAttribute($date)
{
return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('M d H:i');
}
}
如何以日期格式显示今天发送的消息 H:i
。以及如何以日期格式 M-d
显示今年发送的所有消息(没有今天发送的消息)。以及如何以日期格式显示过去几年发送的消息 Y-m-d
。我必须在哪里编写检查消息日期和 return 所需格式的代码?
这是我获取日期差异的代码:
echo $today = date('Y-m-d H:i:s');
echo $message_date = "2018-01-07 01:34:35"; // Work date('H:i')
// $message_date = "2017-01-07 01:34:35"; // Work date('Y-m-d')
// $message_date = "2017-12-07 01:34:35"; // Work date('M d')
$date_diff = date_diff(date_create($today), date_create($message_date));
if($date_diff->days == 0) echo '<p>'.date('H:i').'</p>';
if($date_diff->y == 0 AND $date_diff->m > 0) echo '<p>'.date('M d').'</p>';
if($date_diff->y > 0) echo '<p>'.date('Y-m-d').'</p>';
我在 Laravel 中写了简单的代码,但它不起作用结束 return "Not working!"
public function getCreatedAtAttribute($date)
{
$today = date_create(date('Y-m-d H:i:s'));
$message_date = date_create($date);
$date_diff = date_diff($today, $message_date);
if($date_diff->days == 0) return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('H:i');
if($date_diff->y == 0 AND $date_diff->m > 0) return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('M d');
if($date_diff->y > 0) return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
return "Not working!";
}
首先,您不应该为 created_at
日期设置访问器以将其转换为字符串。删除访问器或重命名它。
How I can display today sended messages in date format
H:i
.
获取消息:
Message::whereDate('created_at', Carbon::today())->get();
And how I can display all messages which sended in this year (without today sended messages) in date format M-d
Message::whereBetween('created_at', [now()->startOfYear(), Carbon::yesterday()->endOfDay()])->get();
And how display sended messages in past years in date format Y-m-d.
Message::where('created_at', '<', now()->startOfYear())->get();
要在 Blade 模板中显示消息,请使用 format()
,例如:
@foreach ($messages as $message)
{{ $message->created_at->format('H:i') }}
@endforeach