Salah satu bidang saya di salah satu entitas saya adalah variabel "datetime".
Bagaimana saya bisa mengubah bidang ini menjadi string untuk di-render di browser?
Berikut ini cuplikan kode:
{% for game in games %}
...
<td> {{game.gameTeamIdOne.teamName}} </td>
<td> {{game.gameTeamIdTwo.teamName}} </td>
<td> {{game.gameDate}}</td>
</tr>
{% endfor %}
Berikut adalah variabel dalam kelas entitas saya:
/**
* @var date $gameDate
*
* @ORM\Column(name="GAME_DATE", type="datetime", nullable=true)
*/
private $gameDate;
Dan inilah pesan kesalahan yang saya dapat:
Pengecualian telah dilemparkan selama rendering templat ("Kesalahan Fatal yang Dapat Ditangkap: Objek kelas DateTime tidak dapat dikonversi ke string di ... \ app \ cache \ dev \ twig \ 9b \ ad \ 58fd3bb1517632badf1fdc7fa4a8.php baris 33" ) di "BeerBundle: Games: gameTable.html.twig" di baris 10.
{{ game.gameDate|date('Y-m-d H:i:s') }}
untuk tanggal dan waktu. Saya kesulitan menemukan karakter selama beberapa menit.date
fungsi Twig . Berdasarkan contoh Anda, Anda harus membungkusnya{% if game.gameDate is not empty %} ... {%endif}
DateTime
kelas! Sebagai gantinya, cukup gunakanlocalizeddate
filter untuk Twig .{% if game.gameDate %} {{ game.gameDate|date('Y-m-d H:i:s') }} {% endif %}
akan disarankanAnda dapat menggunakan
date
filter:sumber
__toString()
metode perlu mengetahui format untuk mengkonversiDateTime
objek, dan mungkin ada ratusan kemungkinan format di luar sana. Tentu saja, di PHP Anda dapat menggunakanformat()
metode padaDateTime
objek, yang mengambil argumen format, dandate
filter hanyalah ranting yang setara dengan metode itu.Tergantung pada format yang Anda inginkan tanggalnya ditampilkan.
Format tanggal statis
Jika Anda ingin menampilkan format statis, yang sama untuk semua lokal (misalnya ISO 8601 untuk umpan Atom), Anda harus menggunakan
date
filter Twig :Yang akan selalu mengembalikan datetime dalam format berikut:
String format yang diterima oleh
date
filter adalah sama dengan yang Anda gunakan untuk fungsi PHPdate()
. (satu-satunya perbedaan adalah bahwa, sejauh yang saya tahu, Anda tidak dapat menggunakan konstanta yang telah ditentukan yang dapat digunakan dalamdate()
fungsi PHP )Tanggal yang dilokalkan (dan waktu)
Namun, karena Anda ingin merendernya di browser, Anda mungkin ingin menampilkannya dalam format yang dapat dibaca manusia, dilokalkan untuk bahasa dan lokasi pengguna. Alih-alih melakukan pelokalan sendiri, Anda dapat menggunakan Ekstensi Internasional untuk ini (yang menggunakan PHP's IntlDateFormatter ). Ini menyediakan filter
localizeddate
yang akan menampilkan tanggal dan waktu menggunakan format lokal.Argumen untuk
localizeddate
:date_format
: Salah satu format string (lihat di bawah)time_format
: Salah satu format string (lihat di bawah)locale
: (opsional) Gunakan ini untuk mengganti lokal yang dikonfigurasi. Biarkan argumen ini untuk menggunakan lokal default, yang dapat dikonfigurasi dalam konfigurasi Symfony.(ada lebih banyak, lihat dokumen untuk daftar lengkap dari argumen yang mungkin)
Untuk
date_format
dantime_format
Anda dapat menggunakan salah satu dari string berikut:'none'
jika Anda tidak ingin memasukkan elemen ini'short'
untuk gaya yang paling singkat (12/13/52 atau 3:30 sore di bahasa Inggris)'medium'
untuk gaya sedang (12 Januari 1952 di tempat berbahasa Inggris)'long'
untuk gaya panjang (12 Januari 1952 atau 15:30:32 dalam bahasa Inggris)'full'
untuk gaya yang ditentukan sepenuhnya (Selasa, 12 April 1952 AD atau 3:30:42 pm PST dalam bahasa Inggris)Contoh
Jadi, misalnya, jika Anda ingin menampilkan tanggal dalam format yang setara dengan
February 6, 2014 at 10:52 AM
, gunakan baris berikut di templat Twig Anda:Namun, jika Anda menggunakan lokal yang berbeda, hasilnya akan dilokalisasi untuk lokal itu:
6 februari 2014 10:52
untuknl
lokal;6 février 2014 10:52
untukfr
lokal;6. Februar 2014 10:52
untukde
lokal; dll.Seperti yang Anda lihat,
localizeddate
tidak hanya menerjemahkan nama bulan tetapi juga menggunakan notasi lokal. Notasi bahasa Inggris menempatkan tanggal setelah bulan, di mana notasi Belanda, Perancis dan Jerman meletakkannya sebelum bulan. Nama bulan Inggris dan Jerman dimulai dengan huruf besar, sedangkan nama bulan Belanda dan Prancis adalah huruf kecil. Dan kurma Jerman memiliki titik ditambahkan.Instalasi / pengaturan lokal
Petunjuk instalasi untuk ekstensi Intl dapat ditemukan di jawaban terpisah ini .
sumber
Jangan lupa
Kesatuan :
Melihat:
>> Output 2013-09-18 16:14:20
sumber
Ada alat symfony2 untuk menampilkan tanggal di lokal saat ini:
https://github.com/michelsalib/BCCExtraToolsBundle
sumber
Untuk string waktu tanggal penuh termasuk offset zona waktu.
sumber
Anda dapat merender dengan cara berikut
{{post.published_at | date ("m / d / Y")}}
Untuk detail lebih lanjut dapat mengunjungi http://twig.sensiolabs.org/doc/filters/date.html
sumber
Saya tahu ini adalah pertanyaan yang cukup lama, tetapi saya menemukan pertanyaan ini hari ini, tetapi jawabannya bukan yang saya butuhkan.
Jadi, inilah yang saya butuhkan.
Jika Anda, seperti saya , ingin menampilkan tanggal saat ini dalam ranting, Anda dapat menggunakan yang berikut:
{{ "now"|date("m/d/Y") }}
Lihat dokumentasi tentang ini:
tanggal dalam ranting
sumber
Untuk menghindari kesalahan pada nilai nol, Anda dapat menggunakan kode ini:
sumber