La más práctica si es que vamos a escribir en español, es registrar las variables locales a nuestro idioma con la línea siguiente:
setlocale(LC_ALL,"es_ES@euro","es_ES","esp");
Así podemos escribir la fecha larga directamente:
<?php
setlocale(LC_ALL,"es_ES@euro","es_ES","esp");
echo "Sevilla, ".strftime("%A %d de %B del %Y");
?>
Una alternativa sería declarar sendas arrays para los dias de la semana y de los meses. Y variables para el resto de conceptos por ejemplo:
<?php
$dia=array("domingo","lunes","martes","miércoles","jueves","viernes","sábado");
$mes=array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre");
$numdia=date(w);//muestra el día de la semana
$nummes=date(n);
$diames=date(j);//muestra el día del mes
$anho=date(Y);
echo "Hoy es $dia[$numdia],$diames de $mes[$nummes] del $anho ";
?>
A partir de aquí se puede formar multitud de combinaciones
| modificadores | ejemplo | resultado | 
| d - día del mes, número, dos dígitos |  <?php $ahora_es = date(d);  ?>   | $ahora_es = 04 | 
| j - día del mes, número, dos dígitos sin cero inicial |  <?php $ahora_es = date(j);  ?>   | $ahora_es = 4 | 
| D - dia semana abreviado letras |  <?php $ahora_es = date(D);  ?>   | $ahora_es = Thu | 
| l - día de la semana, en texto, completo |  <?php $ahora_es = date(l);  ?>   | $ahora_es = Thursday | 
| w -  día de la semana, en numero (comienza en 0 = domingo) |  <?php $ahora_es = date(w);  ?>   | $ahora_es = 4 | 
Jugando con fechas: el mes
| modificadores | ejemplo | resultado | 
| m - mes, número, dos dígitos |  <?php $ahora_es = date(m);  ?>   | $ahora_es = 08 | 
| n - mes, número, dos dígitos sin cero inicial |  <?php $ahora_es = date(n);  ?>   | $ahora_es = 8 | 
| M - mes, tres letras |  <?php $ahora_es = date(M);  ?>   | $ahora_es = Aug | 
| F - mes, texto completo |  <?php $ahora_es = date(F);  ?>   | $ahora_es = August | 
| t - total dias en el mes |  <?php $ahora_es = date(t);  ?>   | $ahora_es = 31 | 
Jugando con fechas: el año
| modificadores | ejemplo | resultado | 
| Y - año, cuatro cifras |  <?php $ahora_es = date(Y);  ?>   | $ahora_es = 2011 | 
| y - año, dos cifras |  <?php $ahora_es = date(y);  ?>   | $ahora_es = 11 | 
| L - bisiesto? |  <?php $ahora_es = date(L);  ?>   | $ahora_es = 0 0 = no; 1 = si | 
| z - día del año |  <?php $ahora_es = date(z);  ?>   | $ahora_es = 215 | 
| W - semana del año |  <?php $ahora_es = date(W);  ?>   | $ahora_es = 31 | 
Jugando con fechas: la hora
| modificadores | ejemplo | resultado | 
| h - hora, de "01" a "12" |  <?php $ahora_es = date(h);  ?>   | $ahora_es = 02 | 
| g - sin ceros, de "1" a "12" |  <?php $ahora_es = date(g);  ?>   | $ahora_es = 2 | 
| H - hora, de "00" a "23" |  <?php $ahora_es = date(H);  ?>   | $ahora_es = 14 | 
| G - sin ceros, de "0" a "23" |  <?php $ahora_es = date(G);  ?>   | $ahora_es = 14 | 
| a - "am" o "pm" A - "AM" o "PM" |  <?php $ahora_es = date(a);  ?>   | $ahora_es = pm | 
Jugando con fechas: minutos
| modificadores | ejemplo | resultado | 
| i - de "00" a "59" |  <?php $ahora_es = date(i);  ?>   | $ahora_es = 24 | 
Jugando con fechas: segundos
| modificadores | ejemplo | resultado | 
| s - de "00" a "59" |  <?php $ahora_es = date(s);  ?>   | $ahora_es = 16 | 
Jugando con fechas: fechas completas
| modificadores | ejemplo | resultado | 
| U segundos desde EPOCH epoch = 1 enero 1970 |  <?php $ahora_es = date(U);  ?>   | $ahora_es = 1312493056 | 
| r - formato RFC 2822 |  <?php $ahora_es = date(r);  ?>   | $ahora_es = Thu, 04 Aug 2011 14 | 
| c - formato ISO 8601 (solo en PHP 5) |  <?php $ahora_es = date(c);  ?>   | N/A | 
Jugando con fechas: varios
| modificadores | ejemplo | resultado | 
| S sufijo en texto, 2 caracteres; por ejemplo, "th", "nd" |  <?php $ahora_es = date(jS);  ?>   | $ahora_es = 4th | 
| I - horario de verano |  <?php $ahora_es = date(I);  ?>   | $ahora_es = 1 0 = no 1 = si | 
| O - diferencia con hora Greenwich |  <?php $ahora_es = date(O);  ?>   | $ahora_es = -0700 | 
| T - zona horaria del server |  <?php $ahora_es = date(T);  ?>   | $ahora_es = PDT | 
| Z diferencia en segundos zona horaria |  <?php $ahora_es = date(Z);  ?>   | $ahora_es = -25200 | 
| B swatch internet time |  <?php $ahora_es = date(B);  ?>   | $ahora_es = 933 | 
Comprobando fechas
checkdate(nMes nDia nAño) nos permite chequear si una fecha dada es posible: es decir, que no se trata del dia 32 del mes 13.checkdate tiene en consideración años bisiestos, y es valido para un rango de años desde 0 a 32767
Y para mas flexibilidad, strftime()
la función date(), tan flexible como es, presenta dos problemas: no admite localización a idiomas distintos del inglés. Y si quieres emplear caracteres adicionales debes salvarlos:
   
<?php 
print date("j \de F \de Y");  // como la "d" equivale al  "dia" en número,  
                              // si queremos que imprima una letra d y no el numero de mes, 
                              // debemos emplear la barra \.  
                              // no serviria escribir "j de F de Y" ?>   Sin que tampoco hayamos ganado mucho en estetica, ya que "4  dAmerica/Los_Angeles August dAmerica/Los_Angeles 2011" no queda muy  bien. La solución pasa por indicar el mes en número y no en letra ... o  usar strftime:Hoy es jueves, 4 de agosto de 2011.
   
<?php 
setlocale(LC_TIME,"es_ES"); 
echo strftime("Hoy es %A, %e de %B de %Y." ,time());  ?>    y estas son las opciones de formato. A la derecha añadimos las equivalentes de date(): | opciones de strftime | opciones de date | ||
| %a | dia semana (abreviado) | a | "am" o "pm" | 
| %A | dia semana (completo) | A | "AM" o "PM" | 
| %b | nombre mes (abreviado) | b | - | 
| %B | nombre mes (completo) | B | Swatch Internet time | 
| %c | representación preferida de dia y hora segun idioma del server | c | - | 
| %C | año en numero (00 - 99) | C | - | 
| %d | numero dia del mes (01 a 31) | d | numero dia del mes (01 a 31) | 
| %D | fecha abreviada, segun idioma server (%m/%d/%y, %y/%m/%d or %d/%m/%y) | D | dia de la semana, tres letras | 
| %e | dia del mes en numero (' 1' - '31') | %e | - | 
| %F | - | F | mes, en texto, completo; por ejemplo, "January" | 
| %g | - | g | hora, sin ceros, de "1" a "12" | 
| %G | - | G | hora, sin ceros; de "0" a "23" | 
| %h | igual que %b | h | h - hora, de "01" a "12" | 
| %H | hora, de "00" a "23" | H | hora, de "00" a "23" | 
| %I | hora como un número de 01 a 12 | I | - | 
| %i | - | i | minutos; de "00" a "59" | 
| %j | día del año como un número de 001 a 366 | j | día del mes sin cero inicial; de "1" a "31" | 
| %l | - | l | día de la semana, en texto, completo; por ejemplo, "Friday" | 
| %L | - | L | "1" o "0" segun el año sea bisiesto o no | 
| %m | mes como un número de 01 a 12 | m | mes: de "01" a "12" | 
| %M | minuto en numero | M | mes, en texto, 3 letras; por ejemplo, "Jan" | 
| %n | nueva linea | n | mes sin cero inicial; de "1" a "12" | 
| %N | - | N | - | 
| %p | 'am' o 'pm', según la hora dada, o las cadenas correspondientes en el idioma actual | p | |
| %r | hora am pm | r | - | 
| %R | hora en formato 24 horas | R | - | 
| %S | segundos en número | S | sufijo ordinal en inglés, en texto, 2 caracteres; por ejemplo, "th", "nd" | 
| %s | - | s | segundos en numero | 
| %t | tabulador | t | número de días del mes dado; de "28" a "31" | 
| %T | Hora actual | T | - | 
| %U | segundos desde epoch | U | segundos desde epoch | 
| %w | día de la semana en número (el domingo es el 0) | w | día de la semana, en número (el domingo es el 0) | 
| %W | número de la semana en el año, empezando con el primer lunes como el primer día de la primera semana | W | - | 
| %x | representación preferida de la fecha sin la hora | x | - | 
| %X | representación preferida de la hora sin la fecha | X | - | 
| %y | año en número de 00 a 99 | y | año en número de 00 a 99 | 
| %Y | año en número de cuatro cifras | Y | año en número de cuatro cifras | 
| %z | - | z | día del año; de "0" a "365" | 
| %Z | nombre o abreviatura de la zona horaria | Z | diferencia horaria en segundos (de "-43200" a "43200") | 
 
No hay comentarios:
Publicar un comentario