CrearFecha ... En Español

>> //seccion/php/ -- 2 comentario /// Agregado el 2004-08-09 @ Por MasterChowl

Función que genera, a partir de una fecha dada como parametro

Función que genera, a partir de una fecha dada como parametro (Timestamp o MySQL) una fecha con días i meses en español i con el formato especificado como parametro ajustandola a la zona horaria (otro parametro)...

Codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
/******************************************************************** 
****                                                              **** 
** Este script sirve para crear  una fecha pasada como parametro    ** 
** (Ya sea MySQL o Timestamp) con un formato especificado usando 
** los estandares de  la  función 'date()' q son los siguientes: 
** 
** a - "am" o "pm" 
** A - "AM" o "PM" 
** d - día del mes, dos dígitos con cero a la izquierda; es decir, de "01" a "31" 
** D - día de la semana, en texto, con tres letras; por ejemplo, "Vie", "Lun" 
** F - mes, en texto, completo; por ejemplo, "Enero" 
** j - día del mes sin cero inicial; de "1" a "31" 
** l ('L' minúscula) - día de la semana, en texto, completo; por ejemplo, "Viernes" 
** L - "1" or "0", según si el año es bisiesto o no 
** S - sufijo ordinal en inglés, en texto, 2 caracteres; por ejemplo, "th", "nd" 
** t - número de días del mes dado; de "28" a "31" 
** m - mes; de "01" a "12" 
** n - mes sin cero inicial; de "1" a "12" 
** M - mes, en texto, 3 letras; por ejemplo, "Jan" 
** w - día de la semana, en número, de "0" (domingo) a "6" (sábado) 
** Y - año, cuatro cifras; por ejemplo, "1999" 
** y - año, dos cifras; por ejemplo, "99" 
** z - día del año; de "0" a "365" 
** h - hora, de "01" a "12" 
** H - hora, de "00" a "23" 
** g - hour, sin ceros, de "1" a "12" 
** G - hour, sin ceros; de "0" a "23" 
** i - minutos; de "00" a "59" 
** s - segundos; de "00" a "59" 
** U - segundos desde el valor de 'epoch' 
** 
** Recomiendo no  manejar  horas  cuando la fecha de entrada sea 
** MySQL ia q el script tiene algunos bugs al respecto. 
** Por otro lado, si la  fecha de entrada es Timestamp se pueden 
** manejar todos los formatos incluyendo horas... 
** 
** Si se omite la hora de entrada, el script usará la hora actual 
** 
** La fecha devuelta se ajusta acorde a la zona horaria especifi- 
** cada por el parametro $tz con los textos de los días i/o meses 
** en castellano. 
** 
** La función está basada en una de tantas q se usan en el siste- 
** ma de foros phpBB, solo la modifiqué ajustandola a mis necesi- 
** dades... 
** 
** Puedes usar i  modificar  este script como gustes, incluso bo- 
** rrar estas estorbosas lineas  amarillas,  solo  recuerda quien   ** 
** lo hizo... =]                                                  **** 
********************************************************************/ 

#*****************************************************************************# 
#** $formato : Formato  de  la  fecha  de salida.  Ej: d-m-Y |-> 04-04-2004 **# 
#** $fecha   : La fecha de entrada a convertir.  Puede estar tanto en MySQL **# 
#**          : como en Timestamp. (Recomiendo usar Timestamp si es posible) **# 
#** $tz      : Modificador de Zona Horaria.                                 **# 
#*****************************************************************************# 


function CrearFecha($formato$fecha$tz){ 
  
# Arreglo con los días i meses i sus traduxiones. 
  
$trad = array( 
    
'Sunday' => 'Domingo',  'Monday' => 'Lunes'
    
'Tuesday' => 'Martes',  'Wednesday' => 'Miércoles'
    
'Thursday' => 'Jueves''Friday' => 'Viernes'
    
'Saturday' => 'Sábado'
    
'Sun' => 'Dom''Mon' => 'Lun'
    
'Tue' => 'Mar''Wed' => 'Mie'
    
'Thu' => 'Jue''Fri' => 'Vie''Sat' => 'Sab'
    
'January' => 'Enero',   'February' => 'Febrero'
    
'March'   => 'Marzo',   'April'    => 'Abril'
    
'May'     => 'Mayo',    'June'     => 'Junio'
    
'July'    => 'Julio',   'August'   => 'Agosto'
    
'September' => 'Septiembre',  'October'  => 'Octubre'
    
'November'  => 'Noviembre',   'December' => 'Diciembre'
    
'Jan' => 'Ene''Feb' => 'Feb''Mar' => 'Mar'
    
'Apr' => 'Abr''May' => 'May''Jun' => 'Jun'
    
'Jul' => 'Jul''Aug' => 'Ago''Sep' => 'Sep'
    
'Oct' => 'Oct''Nov' => 'Nov''Dec' => 'Dic'
  ); 

  
# Si no se pasó una fecha como parametro, usa la fecha actual. 
  
if(!$fecha$fecha time(); 

  
# Si la fecha está en formato MySQL, La ajusta a Timestamp. 
  
if( count(explode('-'$fecha)) > ) { 

    
# Si acaso la fecha  trajera la hora,  Divide  la  cadena (Fecha, Hora). 
    
$fecha explode(' ',$fecha); 

    
# Divide la parte de la Fecha. 
    
list($año,$mes,$dia)  = explode('-'$fecha[0]); 

    
# Divide la parte de la  Hora. 
    
list($hora,$min,$seg) = explode(':'$fecha[1]); 

    
# Si la Hora es pm, le suma 12 horas a la Hora pm. 
    # de esta forma, si estaba en formato de 12 h, la convierte a 24 h. 
    
if( ($fecha[2] == 'pm' || $fecha[2] == 'PM') && $hora != 12$hora $hora+12

    
# Convierte a Timestamp la Fecha completa. 
    
$fecha mktime($hora,$min,$seg,$mes,$dia,$año); 
  } 
    
# Retorna la fecha en el formato especificado mas el ajuste de 
    # la zona horaria reemplazando  las frases de los meses y días 
    # (si se especifica en $formato) por frases castellanas. 
  
return strtr(@gmdate($formato$fecha + (3600 $tz)), $trad); 



# Ejemplos: 

#echo CrearFecha('D d-M-Y',date('Y-m-d',time()),-6,1); 
#echo CrearFecha('l d.F Y',date('Y-m-d',time()),-6,1); 
#echo CrearFecha('F d, Y',time(),-6); 
#echo CrearFecha('F d, Y H:i.s a','2004-08-08 1:20 pm',-6,1); 
?>