데이터베이스에서 가져온 날짜 형식을 변경하고 싶습니다. 이제 2016-10-01 {{$user->from_date}}
. laravel 5.3에서 'dmy'형식을 변경하고 싶습니다.
{{ $user->from_date->format('d/m/Y')}}
데이터베이스에서 가져온 날짜 형식을 변경하고 싶습니다. 이제 2016-10-01 {{$user->from_date}}
. laravel 5.3에서 'dmy'형식을 변경하고 싶습니다.
{{ $user->from_date->format('d/m/Y')}}
답변:
이 시도:
date('d-m-Y', strtotime($user->from_date));
날짜를 입력 한 d-m-Y
형식 으로 변환합니다 .
참고 : 이 솔루션은 php 및 모든 프레임 워크에서 작동하는 일반적인 솔루션입니다. Laravel 특정 방법의 경우 Hamelraj에서 제공하는 솔루션을 사용해보십시오 .
모델 세트에서 :
protected $dates = ['name_field'];
당신의 관점에서 :
{{ $user->from_date->format('d/m/Y') }}
공장
Call to a member function format() on null
확인할 수 있습니다 Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
당신은 당신의 설정 필요가 User
모델 컬럼 from_date
에 $dates
배열 한 다음이에서 형식을 변경할 수 있습니다$dateFormat
또 다른 옵션은이 방법을 User
모델에 넣는 것 입니다.
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
실행 {{ $user->from_date }}
하면 원하는 형식이 표시됩니다.
다음과 같은 3 가지 방법이 있습니다.
1) 라 라벨 모델 사용
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) PHP strtotime 사용
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) 카본 사용
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
방법 1 :
strtotime()
종료 시간을 사용하는 것이 날짜를 주어진 형식으로 변경하는 가장 좋은 형식입니다.
strtotime()
-영어 텍스트 날짜 / 시간 설명을 Unix 타임 스탬프로 구문 분석
이 함수는 영어 날짜 형식을 포함하는 문자열이 주어질 것으로 예상하고 현재 제공된 타임 스탬프를 기준으로 해당 형식을 Unix 타임 스탬프 (1970 년 1 월 1 일 00:00:00 UTC 이후의 초 수)로 구문 분석하려고 시도합니다. now가 제공되지 않은 경우 현재 시간입니다.
예:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
산출:
2007-02-26
방법 2 :
date_format()
-새 DateTime 개체를 반환 한 다음 날짜 형식을 지정합니다.
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
산출:
2013/03/15 00:00:00
비슷한 문제가있었습니다. 형식을 변경하고 싶었지만 블레이드 템플릿 엔진에서도 형식을 변경할 수있는 유연성을 원했습니다.
따라서 내 모델을 다음과 같이 설정합니다.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
는 setToStringFormat
이 모델이 형식을 사용하는 모든 날짜를 설정합니다.
이것의 장점은 뮤 테이터없이 내가 원하는 형식을 가질 수 있다는 것입니다. 뮤 테이터를 사용하면 속성이 문자열로 반환되므로 원하는 경우 블레이드 템플릿에서 다음과 같이 작성해야합니다. 템플릿의 형식을 변경합니다.
{{ date('Y', strtotime($user->from_date)) }}
별로 깨끗하지 않습니다.
대신 속성은 여전히 Carbon 인스턴스로 반환되지만 먼저 원하는 형식으로 반환됩니다.
즉, 템플릿에서 다음과 같은 깔끔한 코드를 작성할 수 있습니다.
{{ $user->from_date->format('Y') }}
Carbon 인스턴스를 다시 포맷 할 수있을뿐만 아니라 템플릿의 속성에 대해 다양한 Carbon 메서드를 호출 할 수도 있습니다.
이 접근 방식에 대한 감독이있을 수 있습니다. 다른 스크립트에 영향을 미칠 경우 모델 상단에 문자열 형식을 지정하는 것은 좋지 않습니다. 내가 지금까지 본 것에서 그것은 일어나지 않았습니다. 해당 모델의 기본 카본 만 변경되었습니다.
이 경우 Carbon 형식을 원래 모델 스크립트의 맨 아래에 있던 형식으로 되 돌리는 것이 좋습니다. 이것은 엉뚱한 아이디어이지만 각 모델이 자체 형식을 갖도록 작동합니다.
반대로 각 모델에 대해 동일한 형식을 사용하는 경우 AppServiceProvider에서 대신 사용하십시오. 그것은 코드를 깔끔하고 유지하기 쉽게 유지합니다.
때때로 날짜 형식을 변경하면 특히 Laravel에서 제대로 작동하지 않습니다. 따라서이 경우 다음을 사용하는 것이 좋습니다.
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
그러면 "1970-01-01"과 같은 오류를 피할 수 있습니다!
m/d/y
또는 d-m-y
형식의 날짜 는 다양한 구성 요소 사이의 구분 기호를 보면 명확 해집니다. 구분 기호가 슬래시 (/)
이면 미국식 m/d/y
으로 간주됩니다. 구분자가 대시 (-)
또는 점인 (.)
경우 유럽 d-m-y
형식으로 간주됩니다. 그러나 연도가 두 자리 형식으로 제공되고 구분 기호가 대시 (-)
인 경우 날짜 문자열은로 구문 분석됩니다 y-m-d
. php.net/manual/en/function.strtotime.php
from_date
열 이 필요할 때마다 날짜 형식을 변경할 필요가 없습니다 .