web-dev-qa-db-ja.com

スペイン語の文字列から日を取得PHP

私は試しています:

 setlocale(LC_ALL,"es_ES");
 $string = "24/11/2014";
 $date = DateTime::createFromFormat("d/m/Y", $string);
 echo $date->format("l");

そして、私は月曜日を取得しています、それは正しいですが、私はスペイン語でそれを必要とするので、スペイン語でこの日を取得する方法はありますか?

11
Mark

日時フォーマットのページから:

このメソッドはロケールを使用しません。すべての出力は英語です。

ロケールが必要な場合は strftime を調べてください。例:

setlocale(LC_ALL,"es_ES");
$string = "24/11/2014";
$date = DateTime::createFromFormat("d/m/Y", $string);
echo strftime("%A",$date->getTimestamp());
19
Jim

私が使う:

setlocale(LC_ALL, "es_ES", 'Spanish_Spain', 'Spanish');
echo iconv('ISO-8859-2', 'UTF-8', strftime("%A, %d de %B de %Y", strtotime($row['date'])));

または

setlocale(LC_ALL,"es_ES@euro","es_ES","esp");

両方とも動作します。 iconvを使用してアクセントの奇妙な記号を回避する必要があり、次の結果が得られます。

domingo, 09 de octubre de 2016
3
Javi Ps

使用する

set_locale(LC_ALL,"es_ES@euro","es_ES","esp");
echo strftime("%A %d de %B del %Y");

または

function SpanishDate($FechaStamp)
{
   $ano = date('Y',$FechaStamp);
   $mes = date('n',$FechaStamp);
   $dia = date('d',$FechaStamp);
   $diasemana = date('w',$FechaStamp);
   $diassemanaN= array("Domingo","Lunes","Martes","Miércoles",
                  "Jueves","Viernes","Sábado");
   $mesesN=array(1=>"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio",
             "Agosto","Septiembre","Octubre","Noviembre","Diciembre");
   return $diassemanaN[$diasemana].", $dia de ". $mesesN[$mes] ." de $ano";
}  
3
WhiteLine

これは私がやった方法です。

// Define key-value array
$days_dias = array(
'Monday'=>'Lunes',
'Tuesday'=>'Martes',
'Wednesday'=>'Miércoles',
'Thursday'=>'Jueves',
'Friday'=>'Viernes',
'Saturday'=>'Sábado',
'Sunday'=>'Domingo'
);

//lookup dia based on day name
$dia =  $days_dias[date('l', strtotime("1993-04-28"))];
2
Chris Denmark