note 106959 added to function.date
| From: | z666zz666z at terra dot es | Date: | Wed, 21 Dec 2011 09:48:35 +0000 |
| Subject: | note 106959 added to function.date | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-185189@lists.php.net to get a copy of this message | ||
Rod, gran trabajo escribiendo la función.
Sólo déjame puntualizar dos cosas, la primera es acerca de los acentos de Miércoles y
Sábado, no aparecen.
La otra cosa es que creo que hay una manera mucho más simple y más sencilla de leer, usando un
array y sin olvidarse de que date("w") devuelve false cuando la fecha no es válida.
Aquà la pongo:
<?php
if(False===($dia=date("w")){ // La fecha no era válida
$dia_texto="Error";
}else{ // El dÃa de la semana es: 0 (Domingo) y de 1 (Lunes) a 6 (Sábado)
$DiasSemana=array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
$dia_texto=$DiasSemana[$dia];
unset($DiasSemana);
}
echo "El dia de la semana es $dia <br>";
echo "El dia de la semana es $dia_texto";
unset($dia_texto,$dia);
?>
Explicación para quien no lo sepa algunas cosas usadas:
El operador de asignación = no sólo asigna el valor sino que también lo devuelve... por
ello la expresión ($dia=date("w")) devuelve un valor, el mismo que se almacena en
$dia... que puede ser False o un número de 0 a 6, porque es lo que devuelve date("w").
Asà mismo se pueden hacer asignaciones múltiples en cadena de un mismo valor:
$VariableA=($VariableB=($VariableC=$Valor)); // Por claridad he puesto paréntesis, para que se
vea explÃcitamente el orden de asignación, todas toman el mismo valor.
Luego hacemos la comparación no sólo del valor sino también del tipo de dato... booleano o
entero... con (False===(...)), con eso sabemos si date("w") devolvió exáctamente
False y no otra cosa que se pueda evaluar como false tal y como podrÃa ser un cero.
El === es justo lo que hace, comparar que ambos sean del mismo tipo y en ese caso que tengan el
mismo valor.
Si hiciéramos (False==0) darÃa True porque cero se evalua como False y False es igual a False
Pero (False===0) da False porque no son del mismo tipo, booleano no es el mismo tipo que entero.
Luego está el truco de tener los dÃas de la semana en un array cuyo primer Ãndice es cero,
más concretamente los ponemos en el orden que date("w") usa.
Para obtener el dÃa de la semana en texto simplemente accedemos a la posición indicada por
date("w") en ese array.
Esto sirve para por ejemplo tener múltiples arrays, para diversos idiomas.
Lo mismo se puede usar para los meses, etc...
Por ejemplo multiidioma:
<?php
if(False===($dia=date("w")){ // La fecha no era válida
$dia_texto="Error";
}else{ // El dÃa de la semana es: 0 (Domingo) y de 1 (Lunes) a 6 (Sábado)
$DiasSemana=array(
'ENG'=>array("Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"),
'ESN'=>array("Domingo", "Lunes", "Martes",
"Miércoles", "Jueves", "Viernes", "Sábado"),
'minis'=>array(
'ENG'=>array('S','M','T','W','T','F','S'),
'ESP'=>array('D','L','M','M','J','V','S'),
)
);
$dia_texto_Español=$DiasSemana['ESP'][$dia];
$dia_texto_Ingles=$DiasSemana['ENG'][$dia];
$dia_texto_Abrebiatura_Español=$DiasSemana['minis']['ESP'][$dia];
$dia_texto_Abrebiatura_Ingles=$DiasSemana['minis']['ENG'][$dia];
unset($DiasSemana);
}
unset($DiasSemana);
?>
Los arrays dan muchÃsimo juego.
----
Server IP: 80.64.47.13
Probable Submitter: 83.42.126.86
----
Manual Page -- http://www.php.net/manual/en/function.date.php
Edit -- https://master.php.net/note/edit/106959
Del: integrated -- https://master.php.net/note/delete/106959/integrated
Del: useless -- https://master.php.net/note/delete/106959/useless
Del: bad code -- https://master.php.net/note/delete/106959/bad+code
Del: spam -- https://master.php.net/note/delete/106959/spam
Del: non-english -- https://master.php.net/note/delete/106959/non-english
Del: in docs -- https://master.php.net/note/delete/106959/in+docs
Del: other reasons-- https://master.php.net/note/delete/106959
Reject -- https://master.php.net/note/reject/106959
Search -- https://master.php.net/manage/user-notes.php