2010-10-13 11 views
5

Bir şablonda belirli bir tarihin gününü ve ayını görüntülerim:Yerel ayarlara göre tarihler nasıl biçimlendirilir?

<div class="jour"><?php echo date('d',strtotime($content->getCreatedAt())) ?></div> 
<div class="mois"><?php echo date('M',strtotime($content->getCreatedAt())) ?></div> 

Bu iyi çalışıyor, sorun ayın ismidir ingilizce. Örneğin, ay adlarını başka bir yerel ayarda, örneğin Fransızca olarak belirtmek istiyorum.

+0

ben settings.yml içinde "default_culture" ayarı çalıştı, ama bunun bir – Manu

cevap

5

Symfony'nin i18n-farkındadır tarihi yardımcıları arasında format_date yardımcısı vardır. Formatlar maalesef bir ipucu için see this link belgelenmiştir.

+2

Evet ... Bu çok daha hoş bir yol olacaktır çok yararlı yap! Ancak cevabımı genel bir PHP çözümü olarak bırakacağım. – lonesomeday

+0

Biçim_tarihi, ayın adını görüntüleyebilir mi? Üzerinde belge bulmuyorum. – Manu

+0

Nevermind, bulundu - http://trac.symfony-project.org/wiki/formatDateHowTo – Manu

1

default_culture sadece doğal PHP fonksiyonları için, symfony uluslararası çerçevede geçerlidir. Eğer geniş bu ayar projeyi değiştirmek isterseniz, ben setlocale kullanarak, config/ProjectConfiguration.class.php bunu yapmak ve sonra date yerine strftime kullanır: Bu makinenizde etkin olması yerel ayarları gerektirir

// config/ProjectConfigration.class.php 
setlocale(LC_TIME, 'fr_FR'); 

// *Success.php 
<div class="jour"><?php echo strftime('%d',strtotime($content->getCreatedAt())) ?></div> 
<div class="mois"><?php echo strftime('%b',strtotime($content->getCreatedAt())) ?></div> 

Not. Sonuç false ise var_dump(setlocale(LC_ALL, 'fr_FR')); yapın kontrol etmek, bunu yapmak için setlocale kullanabilir ve muhtemelen çeviri kodu kendiniz yazmanız gerekir olamaz. Ayrıca, sisteminizde doğru yerel ayarların olması gerekir. Hangi yerellerin yüklü olduğunu kontrol etmek için komut satırında locale -a yapın.

+0

değişmedi bizzat bulundu 'strftime% X% X' parametreler –

1
çok geç gün içinde çarpışmasıyla için üzgünüm

, ama burada benim kendi düşüncelerimi eklemek istiyorum. En iyi uluslararası tarih formatı, "% e% b% Y", örn. 9 Mart 2012. Bunu, ISO formatındaki "% Y-% m-% d" biçiminden çok daha okunabilir buluyorum. 2012-03-09. Dokümanlara göre,% x biçimi yerel olarak hassas olmalı, ancak en azından iPhone'da değil, benim için işe yaramıyor. Bunun nedeni, Safari'nin HTML başlıklarındaki yerel ayarı geçmemesi olabilir, bilmiyorum.

0

Bu setlocale farklı olası değerleri içeren bir dizi kullanımı bazen kullanışlıdır(). Özellikle desteklemek için farklı ortamlarda (pencereler, Linux, ...) belgeleri belirtse de

setlocale(LC_TIME, array('fr', 'fr_FR', 'fr_FR.utf8', 'french', 'french_FRANCE', 'french_FRANCE.utf8')); 
echo strftime("%A %d %B", strtotime(date("Y-m-d"))); 

:

yerel bir dizi ya da daha sonra her bir dizi elemanı ya da bir parametredir ek parametreler, ardından ise başarıya kadar yeni yerel ayar olarak ayarlanmaya çalışıldı. Bu, farklı sistemlerde farklı adlar altında bir yer bilgisinin bilinmesi veya olası bir yerel ayar için bir geri dönüş sağlaması durumunda kullanışlıdır.