IT

Twig 템플릿에서 DateTime 개체를 렌더링하는 방법

itgroup 2023. 1. 12. 22:11
반응형

Twig 템플릿에서 DateTime 개체를 렌더링하는 방법

엔티티 중 하나에 있는 필드 중 하나가 "datetime" 변수입니다.

이 필드를 브라우저에서 렌더링할 문자열로 변환하려면 어떻게 해야 합니까?

코드 스니펫을 다음에 나타냅니다.

{% for game in games %}
    ...
        <td> {{game.gameTeamIdOne.teamName}} </td>
        <td> {{game.gameTeamIdTwo.teamName}} </td>
        <td> {{game.gameDate}}</td>
    </tr>
{% endfor %}

엔티티 클래스의 변수는 다음과 같습니다.

/**
 * @var date $gameDate
 *
 * @ORM\Column(name="GAME_DATE", type="datetime", nullable=true)
 */
private $gameDate;

에러 메세지는 다음과 같습니다.

템플릿 렌더링 중 예외가 발생했습니다.("Catchable Fatal Error: 클래스 DateTime 개체를 문자열로 변환할 수 없습니다..."\app\cache\dev\twig\ad\58fd3bb1517632badf1fdc7fa4a8.php line 33)을 참조하십시오.게임: gameTable.html.twig"를 10행째에 표시합니다.

를 사용할 수 있지만

{{ game.gameDate|date('Y-m-d') }}

접근방법에서는 이 버전은 사용자 로케일을 지원하지 않습니다.이것은 한 국적의 사용자만 사용하는 사이트에서는 문제가 되지 않습니다.는 게임 날짜를 . , 게임 날짜를 해야 합니다. 「 」, 「 」, 「 」\DateTime 및 「」를 추가합니다.__toString()로케일을 체크하고 그에 따라 동작하는 메서드입니다.

편집:

댓글에서 @Nic이 지적한 바와 같이 Twig의 Interl 확장자를 사용하면localizeddate필터를 사용할 수 있습니다.이 필터는 사용자 로케일의 날짜를 표시합니다. 내가 했던 '연장' 수 .\DateTime.

필터를 사용할 수 있습니다.

{{ game.gameDate|date("m/d/Y") }}

날짜를 표시하는 형식에 따라 다릅니다.

정적 날짜 형식

모든 로케일에서 동일한 정적 형식(예: Atom 피드의 ISO 8601)을 표시하려면 Twig의 필터를 사용해야 합니다.

{{ game.gameDate|date('Y-m-d\\TH:i:sP') }}

그러면 항상 다음 형식으로 날짜/시간이 반환됩니다.

2014-05-02T08:55:41Z

에서 date필터는, PHP기능에 사용하는 것과 같습니다.(단 한 가지 차이점은 PHP에서 사용할 수 있는 사전 정의된 상수는 사용할 수 없다는 것입니다.date()□□□□□□□□★

현지화된 날짜(및 시간)

다만, 브라우저에 렌더링 하고 싶기 때문에, 유저의 언어나 장소에 맞추어 현지화된, 사람이 읽을 수 있는 형식으로 표시하는 것이 좋습니다.현지화를 직접 하는 대신 이를 위해 Intl Extension을 사용할 수 있습니다(PHP의 IntlDateFormatter 사용).필터를 제공합니다.localizeddate현지화된 형식을 사용하여 날짜와 시간을 출력합니다.

localizeddate( date_format, time_format [, locale ] )

의 인수localizeddate:

  • date_format: 포맷 문자열 중 하나(아래 참조)
  • time_format: 포맷 문자열 중 하나(아래 참조)
  • locale: (임의) 설정된 로케일을 덮어쓰려면 이 명령을 사용합니다.Symfony 구성에서 구성할 수 있는 기본 로케일을 사용하려면 이 인수를 사용하지 마십시오.

(가능한 인수의 완전한 리스트에 대해서는, 문서를 참조해 주세요).

★★★의 date_format ★★★★★★★★★★★★★★★★★」time_format다음 문자열 중 하나를 사용할 수 있습니다.

  • 'none'
  • 'short'가장 축약된 스타일(영어 로케일의 경우 12/13/52 또는 오후 3:30)의 경우
  • 'medium'스타일( 1월 12일 로케일(1952년 1월 12일)
  • 'long'12일 32초)
  • 'full'완전히 지정된 스타일(영어 로케일의 경우 1952년 4월 12일 화요일 또는 오후 3시 30분 42초)

예를 때, 를 표시해 주세요.February 6, 2014 at 10:52 AM잔가지를 치다

{{ game.gameDate|localizeddate('long', 'short') }}

다만, 다른 로케일을 사용하는 경우, 결과는 그 로케일로 현지화 됩니다.

  • 6 februari 2014 10:52★★★★★★★★★★★★★★★★의 경우nl로케일
  • 6 février 2014 10:52★★★★★★★★★★★★★★★★의 경우fr로케일
  • 6. Februar 2014 10:52★★★★★★★★★★★★★★★★의 경우de로케일 등

바와 같이, '우리'는 '우리'입니다.localizeddate는 월명을 변환할 뿐만 아니라 로컬 표기도 사용합니다.영어 표기법은 네덜란드어, 프랑스어, 독일어 표기법에 따라 날짜를 월 앞에 붙입니다.영어와 독일어 월명은 대문자로 시작하지만 네덜란드어와 프랑스어 월명은 소문자로 시작합니다.그리고 독일 날짜에는 점이 하나 더 붙습니다.

설치/로케일 설정

답변에서는, 국제 전화 번호 확장의 인스톨 순서를 참조해 주세요.

꽤 오래된 질문인 건 알지만, 오늘 이 질문을 발견했지만, 제가 원하는 답은 아니었습니다.

그래서 내가 필요했던 게 이거야

처럼 현재 날짜를 나뭇가지로 표시하려면 다음을 사용할 수 있습니다.

{{ "now"|date("m/d/Y") }}

다음의 메뉴얼을 참조해 주세요.

잔가지로 날짜

null 값의 오류를 방지하려면 다음 코드를 사용합니다.

{{ game.gameDate ? game.gameDate|date('Y-m-d H:i:s') : '' }}

잊지마

@ORM\HasLifecycleCallbacks()

엔티티:

/**
     * Set gameDate
     *
     * @ORM\PrePersist
     */
    public function setGameDate()
    {
        $this->dateCreated = new \DateTime();

        return $this;
    }

표시:

{{ item.gameDate|date('Y-m-d H:i:s') }}

>> 2013-09-18 16:14:20 출력

{{game.gameDate | date('c')}}  // 2014-02-05T16:45:22+00:00

시간대 오프셋을 포함한 전체 날짜 시간 문자열.

현재 로케일의 날짜를 표시하는 symfony2 도구가 있습니다.

{{ user.createdAt|localeDate }} to have a medium date and no time, in the current locale

{{ user.createdAt|localeDate('long','medium') }} to have a long date and medium time, in the current locale

https://github.com/michelsalib/BCCExtraToolsBundle

다음과 같은 방법으로 렌더링할 수 있습니다.

{{ post . published _ at | date ( " m / d / Y ) } }

상세한 것에 대하여는, http://twig.sensiolabs.org/doc/filters/date.html 를 참조해 주세요.

와 기능일자를 할 수 .ternarytwig

{{ game.gameDate ? game.gameDate|date('d-m-Y H:i') : 'Not Available' }}

언급URL : https://stackoverflow.com/questions/8318914/how-to-render-a-datetime-object-in-a-twig-template

반응형