2013-01-24 50 views
5

Fatura sistemimiz için bir modül yazmam ve alışık olduğum tüm işlevleri kullanarak tamamlaması istendi. Bir İngiliz kurulumunda test edildi, ancak şirketimizin kullandığı asıl sistemin Fransız olduğu gerçeğini hesaba katmadım (veya bunun farkındaydım). Yazdığımstrtotime() öğesini StrFTime() dönüştürün

kod

$due_date = strtotime($next_due_date); 
$today = date('Y-m-d'); 
$today_date = strtotime($today); 

if ($due_date > $today_date) { 

Ancak strftime'a yabancıyım ve bu kod Fransız yerel ayar için işe gitmek için kullanabilirsiniz merak ... nedir?

+0

Fransızca yerel ayarında, "$ next_due_date" tarihin dize temsili olarak neleri içerir? – shadyyx

+0

Tam olarak karşılaştığınız sorun nedir ve gerektiği gibi çalışmayan nedir? Bazı örnek veriler gösterebilir misin? –

+0

http://php.net/manual/en/function.strftime.php – bodi0

cevap

0

Basit ve hızlı bir örnek. Eğer setlocale

setlocale(LC_TIME, "fr_FR"); 

İkinci kullanmalıdır bu

<?php 
     setlocale(LC_ALL, 'fra_fra'); 

     $today = date('Y-m-d'); 
     $date_string = utf8_encode(strftime('%d %B %Y', strtotime($today))); 
     echo $date_string; 
?> 
1

İlk yardım Umut için dize olarak tarih karşılaştırmak ya da hala strtotime değil strftime kullanmalıdır int. (Veya YYYY-mm-dd

strftime sadece lokalize standart bir format değil bunu saklamak istiyorum. Dizesi olarak tarihini temsil etmek, veya işlemeden, kullanmak gerekir içindir. Bkz formatta her zaman dize kullanabilirsiniz doc

potansiyel belirsizlik olmaması için, bu mümkün olduğunda), ISO 8601 (YYYY-AA-GG) tarih ve DateTime :: createFromFormat (kullanmak en iyisidir.

Yani olası bir kod

//$next_due_date must be in a standard format like YYYY-mm-dd (but not only) 
$due_date = strtotime($next_due_date); 
$today_date = time(); 

if ($due_date > $today_date) { 
    echo strftime("%c",$due_date) . " is in the future"; 
}