laravel보기 페이지에서 날짜 형식 변경


94

데이터베이스에서 가져온 날짜 형식을 변경하고 싶습니다. 이제 2016-10-01 {{$user->from_date}}. laravel 5.3에서 'dmy'형식을 변경하고 싶습니다.

{{ $user->from_date->format('d/m/Y')}}

답변:


145

이 시도:

date('d-m-Y', strtotime($user->from_date));

날짜를 입력 한 d-m-Y형식 으로 변환합니다 .

참고 : 이 솔루션은 php 및 모든 프레임 워크에서 작동하는 일반적인 솔루션입니다. Laravel 특정 방법의 경우 Hamelraj에서 제공하는 솔루션을 사용해보십시오 .


2
@ user3386779 : 작동하지만 가장 아름다운 솔루션은 아닙니다. :) Laravel은이 작업을 수행하는 메커니즘이 거의 없습니다. 내 대답을 선택하면 한곳에서 날짜 형식을 설정해야하며 표시 from_date열 이 필요할 때마다 날짜 형식을 변경할 필요가 없습니다 .
— Marek Skiba

@MarekSkiba 나는 :) 내 대답에 같은 일을 언급해야
— Mayank Pandeyz

예를 들어 언어를 변경하려는 경우-> 'es'(달 이름)
— Alberto Acuña

1
당신이 사용해야 @sadiq에 동의 $ 사용자 -> from_date-> 형식 ( 'D / M / Y')
— 에릭 라르손

1
위대하고 매우 간단한 솔루션.
— Muddasir23

129

Laravel 사용에서 탄소 그것의 좋은

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

예, $ user-> from_date는 null언제입니까?
— lewis4u

1
@ lewis4u null 값을 전달하면 parse(null)현재 날짜 시간으로 변환됩니다
— Hamelraj

1
맞습니다 ... 그리고 어떤 경우에는 좋지 않습니다! 그러니 조심하세요!
— lewis4u

73

모델 세트에서 :

protected $dates = ['name_field'];

당신의 관점에서 :

{{ $user->from_date->format('d/m/Y') }}

공장


3
나는 이것이 이것을하는 가장 "라벨적인 방법"이라고 생각한다. 그래서 이것이 정답으로 표시되어야한다.
— CodeChuck 2019

저도 동의합니다. 이것이 가장 좋은 방법입니다
— JonaPkr

나를 위해 작동하지 않습니다. 난 아직 날짜 열 유형 및 타임 스탬프 열 유형,하지만 오류에 alreay 것Call to a member function format() on null
— Bariq Dharmawan

36

확인할 수 있습니다 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 }}하면 원하는 형식이 표시됩니다.


이 laravel을위한 더 나은 방법이라고 동의
— limco

1
유일한 단점은 뷰에 문자열을 반환한다는 것입니다. 따라서 동일한보기에 다른 날짜 형식을 표시하려면 Carbon을 사용하여 날짜를 다시 분석해야합니다.
— JustCarty

죄송합니다. 이것은 setFromDateAttribute 대신 getFromDateAttribute를 사용하기 때문에 Mutator입니다. 내가 아는 것에서 mutator는 set을 사용하고 접근
— 자는

열이 null의 경우이 반환 현재 날짜
— Bariq Dharmawan

14

블레이드 템플릿에서 사용하기 쉬운 날짜는 그런 식으로 카본 을 사용 합니다.

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

10

다음과 같은 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);

9

방법 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 

5

당신이 사용할 수있는 Carbon::createFromTimestamp

잎

{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}

4

비슷한 문제가있었습니다. 형식을 변경하고 싶었지만 블레이드 템플릿 엔진에서도 형식을 변경할 수있는 유연성을 원했습니다.

따라서 내 모델을 다음과 같이 설정합니다.

<?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에서 대신 사용하십시오. 그것은 코드를 깔끔하고 유지하기 쉽게 유지합니다.


0

때때로 날짜 형식을 변경하면 특히 Laravel에서 제대로 작동하지 않습니다. 따라서이 경우 다음을 사용하는 것이 좋습니다.

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

그러면 "1970-01-01"과 같은 오류를 피할 수 있습니다!


그것은 php와 관련된 laravel 문제가 아닙니다. 읽어보세요 : m/d/y또는 d-m-y형식의 날짜 는 다양한 구성 요소 사이의 구분 기호를 보면 명확 해집니다. 구분 기호가 슬래시 (/)이면 미국식 m/d/y으로 간주됩니다. 구분자가 대시 (-)또는 점인 (.)경우 유럽 d-m-y형식으로 간주됩니다. 그러나 연도가 두 자리 형식으로 제공되고 구분 기호가 대시 (-)인 경우 날짜 문자열은로 구문 분석됩니다 y-m-d. php.net/manual/en/function.strtotime.php
— Mayank Pandeyz

0

Laravel에서는 app / Helper / helper.php에 다음과 같은 함수를 추가 할 수 있습니다.

function formatDate($date = '', $format = 'Y-m-d'){
    if($date == '' || $date == null)
        return;

    return date($format,strtotime($date));
}

다음과 같은 컨트롤러에서이 함수를 호출합니다.

$start_date = formatDate($start_date,'Y-m-d');

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.