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 를 참조해 주세요.
와 기능일자를 할 수 .ternary
twig
{{ 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
'IT' 카테고리의 다른 글
식 앞에 칠데는 무엇을 합니까? (0) | 2023.01.12 |
---|---|
판다 데이터 프레임에서 인덱스를 재설정하려면 어떻게 해야 합니까? (0) | 2023.01.12 |
Y는 2012를 반환하고 y는 SimpleDateFormat 2011을 반환한다. (0) | 2023.01.12 |
JavaScript의 "new" 키워드는 유해한 것으로 간주됩니까? (0) | 2023.01.12 |
jQuery.fn은 무슨 뜻입니까? (0) | 2023.01.12 |