Saya ingin mengubah format tanggal yang diambil dari database. sekarang saya mendapat 2016-10-01. {{$user->from_date}}
Saya ingin mengubah format 'dmy' di laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Saya ingin mengubah format tanggal yang diambil dari database. sekarang saya mendapat 2016-10-01. {{$user->from_date}}
Saya ingin mengubah format 'dmy' di laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Jawaban:
Coba ini:
date('d-m-Y', strtotime($user->from_date));
Ini akan mengubah tanggal menjadi d-m-Y
atau format apa pun yang Anda berikan.
Catatan: Solusi ini adalah solusi umum yang berfungsi untuk php dan kerangka kerjanya. Untuk metode khusus Laravel, coba solusi yang disediakan oleh Hamelraj .
Di Laravel gunakan Carbon yang bagus
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
null
?
parse(null)
dalamnya akan dikonversi sebagai waktu tanggal saat ini
Di set Model Anda:
protected $dates = ['name_field'];
setelah dalam pandanganmu:
{{ $user->from_date->format('d/m/Y') }}
bekerja
Call to a member function format() on null
Anda dapat memeriksa Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
Anda perlu mengatur User
kolom model Anda from_date
dalam $dates
array dan kemudian Anda dapat mengubah format dalam$dateFormat
Opsi lain juga meletakkan metode ini ke User
model Anda :
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
dan kemudian di view jika dijalankan {{ $user->from_date }}
anda akan melihat format yang anda inginkan.
Tanggal yang mudah digunakan dalam templat pisau, gunakan Karbon seperti itu
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Ada 3 cara yang bisa Anda lakukan:
1) Menggunakan Model Laravel
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) Menggunakan strtotime PHP
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) Menggunakan Karbon
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
Metode Satu:
Menggunakan strtotime()
to time adalah format terbaik untuk mengubah tanggal ke format yang diberikan.
strtotime()
- Parsing tentang deskripsi tanggal waktu tekstual bahasa Inggris ke dalam stempel waktu Unix
Fungsi tersebut mengharapkan untuk diberikan string yang berisi format tanggal Inggris dan akan mencoba untuk mengurai format tersebut menjadi stempel waktu Unix (jumlah detik sejak 1 Januari 1970 00:00:00 UTC), relatif terhadap stempel waktu yang diberikan sekarang, atau waktu saat ini jika sekarang tidak tersedia.
Contoh:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
Keluaran:
2007-02-26
Metode Kedua:
date_format()
- Kembalikan objek DateTime baru, lalu format tanggal:
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
Keluaran:
2013/03/15 00:00:00
Saya memiliki masalah serupa, saya ingin mengubah formatnya, tetapi saya juga menginginkan fleksibilitas untuk dapat mengubah format di mesin template blade juga.
Oleh karena itu, saya mengatur model saya sebagai berikut:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
Ini setToStringFormat
akan mengatur semua tanggal untuk menggunakan format ini untuk model ini.
Keuntungan dari ini bagi saya adalah saya dapat memiliki format yang saya inginkan tanpa mutator, karena dengan mutator, atribut dikembalikan sebagai string yang berarti bahwa dalam templat pisau saya harus menulis sesuatu seperti ini jika saya mau ubah format di template:
{{ date('Y', strtotime($user->from_date)) }}
Yang tidak terlalu bersih.
Sebaliknya, atribut tersebut masih dikembalikan sebagai contoh Karbon, namun atribut tersebut dikembalikan pertama kali dalam format yang diinginkan.
Itu berarti bahwa di template saya bisa menulis kode berikut, lebih bersih,:
{{ $user->from_date->format('Y') }}
Selain dapat memformat ulang contoh Karbon, saya juga dapat memanggil berbagai metode Karbon pada atribut di templat.
Mungkin ada kekeliruan dalam pendekatan ini; Saya berani bertaruh bukanlah ide yang baik untuk menentukan format string di bagian atas model jika itu mempengaruhi skrip lain. Dari apa yang saya lihat sejauh ini, itu belum terjadi. Itu hanya mengubah Karbon default untuk model itu saja.
Dalam hal ini, mungkin ini adalah pengaturan yang baik untuk mengembalikan format Carbon ke format semula di bagian bawah skrip model. Ini adalah ide bertubuh, tetapi akan bekerja untuk setiap model untuk memiliki formatnya sendiri.
Sebaliknya, jika Anda memiliki format yang sama untuk setiap model maka di AppServiceProvider Anda. Itu hanya akan membuat kode lebih rapi dan lebih mudah dipelihara.
Terkadang mengubah format tanggal tidak berfungsi dengan baik, terutama di Laravel. Jadi dalam hal ini, lebih baik menggunakan:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
Kemudian Anda dapat menghindari kesalahan seperti "1970-01-01"!
m/d/y
atau d-m-y
disederhanakan dengan melihat pemisah antara berbagai komponen: jika pemisahnya berupa garis miring (/)
, maka orang Amerika m/d/y
dianggap; sedangkan jika pemisahnya berupa tanda hubung (-)
atau titik (.)
, maka d-m-y
format Eropa diasumsikan. Namun, jika tahun diberikan dalam format dua digit dan pemisahnya berupa tanda hubung (-)
, string tanggal akan diuraikan sebagai y-m-d
. php.net/manual/en/function.strtotime.php
Di Laravel Anda dapat menambahkan fungsi di dalam app / Helper / helper.php seperti
function formatDate($date = '', $format = 'Y-m-d'){
if($date == '' || $date == null)
return;
return date($format,strtotime($date));
}
Dan panggil fungsi ini pada pengontrol seperti ini
$start_date = formatDate($start_date,'Y-m-d');
Semoga membantu!
from_date
kolom tampilan .