Veritabanından alınan tarih formatını değiştirmek istiyorum. şimdi 2016-10-01 var {{$user->from_date}}
. laravel 5.3'te 'dmy' formatını değiştirmek istiyorum
{{ $user->from_date->format('d/m/Y')}}
Veritabanından alınan tarih formatını değiştirmek istiyorum. şimdi 2016-10-01 var {{$user->from_date}}
. laravel 5.3'te 'dmy' formatını değiştirmek istiyorum
{{ $user->from_date->format('d/m/Y')}}
Yanıtlar:
Bunu dene:
date('d-m-Y', strtotime($user->from_date));
Tarihi d-m-Y
veya vermiş olduğunuz formata dönüştürecektir .
Not: Bu çözüm, php ve herhangi bir çerçevesi için çalışan genel bir çözümdür. Laravel'e özgü bir yöntem için, Hamelraj tarafından sağlanan çözümü deneyin .
Laravel kullanımı ise Karbon onun iyi
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
null
?
parse(null)
geçerli tarih saati olarak
Model setinizde:
protected $dates = ['name_field'];
sizin görüşünüzden sonra:
{{ $user->from_date->format('d/m/Y') }}
İşler
Call to a member function format() on null
Kontrol edebilirsiniz Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
Eğer belirlenen ihtiyaç User
modeli sütununda from_date
yer $dates
dizideki sonra sizden biçimini değiştirebilirsiniz$dateFormat
Diğer bir seçenek de bu yöntemi User
modelinize koymaktır :
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
ve sonra görünümde çalıştırırsanız {{ $user->from_date }}
istediğiniz formatı göreceksiniz.
Bıçak şablonunda kullanımı kolay tarih, Carbon'u bu şekilde kullanın
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Yapabileceğiniz 3 yol vardır:
1) Laravel Modelini Kullanma
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) PHP strtotime'ı kullanma
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) Karbon Kullanımı
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
Birinci Yöntem:
strtotime()
Saati kullanmak, tarihi verilen biçime değiştirmek için en iyi biçimdir.
strtotime()
- Herhangi bir İngilizce metinsel tarih saat açıklamasını Unix zaman damgasına ayrıştırın
İşlev, İngilizce tarih biçimini içeren bir dizge verilmesini bekler ve bu biçimi şu anda verilen zaman damgasına göre bir Unix zaman damgasına (1 Ocak 1970 00:00:00 UTC'den bu yana geçen saniye sayısı) ayrıştırmaya çalışır veya şimdi sağlanmadıysa geçerli saat.
Misal:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
Çıktı:
2007-02-26
İkinci Yöntem:
date_format()
- Yeni bir DateTime nesnesi döndürün ve ardından tarihi biçimlendirin:
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
Çıktı:
2013/03/15 00:00:00
Benzer bir sorun yaşadım, formatı değiştirmek istedim, ancak aynı zamanda blade şablon motorundaki formatı değiştirebilme esnekliğini de istedim.
Bu nedenle modelimi şu şekilde kurdum:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
setToStringFormat
Bu model için bu formatı kullanmak için tüm tarihleri ayarlayacaktır.
Bunun benim için avantajı, mutatör olmadan istediğim formata sahip olabilmemdir, çünkü mutatörde özellik bir dizge olarak döndürülür, yani bıçak şablonunda istersem buna benzer bir şey yazmam gerekirdi. şablondaki biçimi değiştirin:
{{ date('Y', strtotime($user->from_date)) }}
Bu çok temiz değil.
Bunun yerine, özellik yine de bir Carbon örneği olarak döndürülür, ancak önce istenen biçimde döndürülür.
Bu, şablonda şu, daha temiz, kodu yazabileceğim anlamına gelir:
{{ $user->from_date->format('Y') }}
Carbon örneğini yeniden biçimlendirebilmenin yanı sıra, şablondaki öznitelik üzerinde çeşitli Carbon yöntemleri de çağırabilirim.
Muhtemelen bu yaklaşıma yönelik bir gözetim vardır; Bahse girerim, diğer komut dosyalarını etkilemesi ihtimaline karşı modelin üst kısmında dize formatını belirtmenin iyi bir fikir olmadığını düşünüyorum.Şimdiye kadar gördüklerime göre, bu olmadı. Yalnızca bu model için varsayılan Carbon'u değiştirdi.
Bu durumda, Carbon formatını orijinal olarak model betiğinin altındaki haline getirmek iyi bir fikir olabilir. Bu köklü bir fikir, ancak her modelin kendi formatına sahip olması işe yarayacaktır.
Aksine, her model için aynı biçime sahipseniz, bunun yerine AppServiceProvider'ınızda. Bu, kodu daha temiz tutar ve bakımı daha kolay olur.
Bazen tarih formatını değiştirmek, özellikle Laravel'de düzgün çalışmaz. Yani bu durumda kullanmak daha iyidir:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
O zaman "1970-01-01" gibi hatalardan kaçınabilirsiniz!
m/d/y
veya d-m-y
biçimlerindeki tarihler, çeşitli bileşenler arasındaki ayırıcıya bakılarak belirsizliği giderilir: ayırıcı bir eğik çizgiyse (/)
, Amerikan m/d/y
varsayılır; oysa ayırıcı bir tire (-)
veya nokta ise (.)
, Avrupa d-m-y
biçimi varsayılır. Bununla birlikte, yıl iki basamaklı bir biçimde verilmişse ve ayırıcı bir tire (-)
ise, tarih dizesi olarak ayrıştırılır y-m-d
. php.net/manual/en/function.strtotime.php
Laravel'de app / Helper / helper.php içine bir işlev ekleyebilirsiniz.
function formatDate($date = '', $format = 'Y-m-d'){
if($date == '' || $date == null)
return;
return date($format,strtotime($date));
}
Ve bu işlevi bunun gibi herhangi bir denetleyicide çağırın
$start_date = formatDate($start_date,'Y-m-d');
Umarım yardımcı olur!
from_date
sütununa ihtiyacınız olduğunda tarih formatını değiştirmeyi hatırlamanız gerekmez .