Mengatur Format Tanggal Ke Bahasa Indonesia pada Laravel

Dalam paket instalasi Laravel, disertakan sebuah library dengan nama Carbon. Library ini merupakan inherit langsung dari built-in class DateTime dan berfungsi untuk memudahkan manipulasi tanggal dan jam dalam PHP. Berikut contoh potongan sintak dalam penggunaan Carbon :

$now = \Carbon\Carbon::now();Carbon\Carbon {
     +"date": "2017-03-04 06:54:17.000000",
     +"timezone_type": 3,
}

Dari variabel $now, kita bisa langung menampilkan output-nya dengan constructor echo atau fungsi print().

echo $now;

Maka akan ditampilkan 2017-03-04 06:54:17.

Variabel $now yang merupakan instance dari Carbon tersebut juga dapat dimodifikasi, semisal ditambahkan/dimajukan satu hari, kemudian diubah formatnya menjadi d, m Y H:i.

$tomorrow = $now->addDays(1);Carbon\Carbon {
     +"date": "2017-03-05 06:59:07.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
}
$nextMonth = $now->addMonths(1);

echo $tomorrow->format('d, m Y H:i'); // 05, 03 2017 06:59
echo $nexMonth->format('d, M Y'); // 05, Apr 2017

Tidak hanya menyertakan library Carbon dalam framework, Laravel juga mengintegrasikannya dengan Eloquent ORM. Contoh tabel user memiliki kolom created_at dan updated_at yang secara bawaan definisikan sebagai tipe data datetime. Dalam Eloquent, kedua kolom tersebut direpresentasikan sebagai attribute created_at dan updated_at. Attribute created_at dan updated_at bukanlah berupa string, namun sebuah object yang merupakan instance dari Carbon.

Untuk membuktikannya, kita bisa mengujinya dengan beberapa baris skrip di bawah.

$user = User::find(1);$user->created_at instanceof \Carbon\Carbon; // true

$user->updated_at instanceof \Carbon\Carbon; // true

Selain created_at dan updated_at, kita juga bisa menentukan sendiri attribute yang jenisnya berupa datetime dengan magic property $dates pada Eloquent. Selangkapnya baca pada halaman berikut. Oleh karena berupa instance dari class Carbon, maka kita dapat menggunakan method yang ada pada Carbon di attribute created_at dan updated_at.

$user = User::find(1);$expirationDate =  $user->created_at->addYears(1); // 2019-04-05 06:59:07

$lastUpdate = $user->updated_at->format('d, M Y H:i');

Dalam Laravel Blade, dapat ditulis seperti contoh di bawah :

Joined at {{ $user->created_at->diffForHumans() }}
// 4 days ago

Membuat Format Tanggal secara Global

Dengan menggunakan method format() setiap kali ingin menampilkan tanggal yang sesuai dengan format kebutuhan hal ini sangat merepotkan. Lebih repot lagi ketika ada perubahan format tanggal, maka kita harus mengganti semuanya satu per satu.

Baca Juga  Tutorial Jetstream Laravel #2 : Authentication

Kita bisa membuat format tanggalnya menjadi global, contoh dari yang bawaannya berupa format Y-m-d H:i:s menjadi l, d F Y H:i (Tuesday, 28 February 2017 07:20). Untuk contoh ini, kita bisa memanfaatkan salah satu fitur dari Laravel, yaitu Accessor.

Pada file model user (app\User.php) kita bisa menambahkan method dengan nama getCreatedAtAttribute(), kemudian dalam method tersebut tambahkan skrip seperti di bawah :

public function getCreatedAtAttribute()
{
    return \Carbon\Carbon::parse($this->attributes['created_at'])
    ->format('d, M Y H:i');
}

Di level Accessor, tipe data attribute created_at dan updated_at masih berupa string. Dengan mnggunakan Carbon akan mengubahnya menjadi object, kemudian mengubah formatnya sesuai dengan contoh kasus di atas.

Hal yang sama juga dapat dilakukan untuk mengubah format attribute updated_at :

public function getUpdatedAtAttribute()
{
    return \Carbon\Carbon::parse($this->attributes['updated_at'])
    ->diffForHumans();
}

Sampai di sini kita sudah berhasil membuat formatnya berubah secara global. Jika ditampilkan,

echo $user->created_at; 
echo $user->updated_at;

maka akan berbentuk seperti berikut :

Tuesday, 28 February 2017 07:20

2 hours ago

 

Mengubah Bahasa Format Tanggal

Carbon sudah menyediakan fitur lokalisasi yang memungkinkan kita menggunakan bahasa sesuai dengan keinginan. Sebagai contoh lkita akan menggunakan bahasa Indonesia.

\Carbon\Carbon::setLocale('id');echo \Carbon\Carbon::now()->format('l, d F Y H:i');

Maka formatnya akan tampil menjadi :

Sabtu, 04 Maret 2017 07:38

Agar lokalisasi berlaku secara global di Laravel, tambahkan skrip di bawah pada method boot() dalam file app/Providers/AppServiceProvider.php.

/**
 * Bootstrap any application services.
 *
 * @return void
 */

public function boot()
{    config(['app.locale' => 'id']);
    \Carbon\Carbon::setLocale('id');
}

Related Post

3 Comments

Leave a Reply

Your email address will not be published.


*


error: Ga bisa dicopy