1
+ <?php
2
+ /**
3
+ * Ejercicio de manejo de fechas en PHP
4
+ * Este script demuestra diferentes operaciones y formatos con fechas
5
+ */
6
+
7
+ // PARTE 1: Crear variables de fecha y calcular años transcurridos
8
+
9
+ // Creamos la fecha actual
10
+ $ fechaActual = new DateTime ();
11
+
12
+ // Creamos una fecha de nacimiento (ejemplo)
13
+ $ fechaNacimiento = new DateTime ('1990-05-15 14:30:00 ' );
14
+
15
+ // Calculamos la diferencia entre las fechas
16
+ $ diferencia = $ fechaActual ->diff ($ fechaNacimiento );
17
+
18
+ echo "Fecha actual: " . $ fechaActual ->format ('Y-m-d H:i:s ' ) . "\n" ;
19
+ echo "Fecha de nacimiento: " . $ fechaNacimiento ->format ('Y-m-d H:i:s ' ) . "\n" ;
20
+ echo "Años transcurridos: " . $ diferencia ->y . "\n\n" ;
21
+
22
+ // PARTE 2: DIFICULTAD EXTRA - Formatear la fecha de 10 maneras diferentes
23
+
24
+ echo "DIFERENTES FORMATOS DE FECHA: \n" ;
25
+
26
+ // 1. Día, mes y año
27
+ echo "1. Día, mes y año: " . $ fechaNacimiento ->format ('d/m/Y ' ) . "\n" ;
28
+
29
+ // 2. Hora, minuto y segundo
30
+ echo "2. Hora, minuto y segundo: " . $ fechaNacimiento ->format ('H:i:s ' ) . "\n" ;
31
+
32
+ // 3. Día del año
33
+ echo "3. Día del año: " . $ fechaNacimiento ->format ('z ' ) . " (comenzando desde 0) \n" ;
34
+
35
+ // 4. Día de la semana
36
+ $ diasSemana = ['Domingo ' , 'Lunes ' , 'Martes ' , 'Miércoles ' , 'Jueves ' , 'Viernes ' , 'Sábado ' ];
37
+ echo "4. Día de la semana: " . $ diasSemana [$ fechaNacimiento ->format ('w ' )] . "\n" ;
38
+
39
+ // 5. Nombre del mes
40
+ $ meses = ['Enero ' , 'Febrero ' , 'Marzo ' , 'Abril ' , 'Mayo ' , 'Junio ' , 'Julio ' ,
41
+ 'Agosto ' , 'Septiembre ' , 'Octubre ' , 'Noviembre ' , 'Diciembre ' ];
42
+ echo "5. Nombre del mes: " . $ meses [$ fechaNacimiento ->format ('n ' ) - 1 ] . "\n" ;
43
+
44
+ // 6. Formato largo personalizado
45
+ setlocale (LC_TIME , 'es_ES.UTF-8 ' );
46
+ echo "6. Formato largo: " . strftime ('%A, %d de %B de %Y ' , $ fechaNacimiento ->getTimestamp ()) . "\n" ;
47
+
48
+ // 7. Formato ISO 8601
49
+ echo "7. Formato ISO 8601: " . $ fechaNacimiento ->format ('c ' ) . "\n" ;
50
+
51
+ // 8. Semana del año
52
+ echo "8. Semana del año: " . $ fechaNacimiento ->format ('W ' ) . "\n" ;
53
+
54
+ // 9. Trimestre del año
55
+ $ trimestre = ceil ($ fechaNacimiento ->format ('n ' ) / 3 );
56
+ echo "9. Trimestre del año: " . $ trimestre . "\n" ;
57
+
58
+ // 10. Timestamp Unix
59
+ echo "10. Timestamp Unix: " . $ fechaNacimiento ->getTimestamp () . "\n" ;
60
+
61
+ // Funciones auxiliares de ejemplo
62
+ function obtenerEdad ($ fechaNacimiento ) {
63
+ $ hoy = new DateTime ();
64
+ $ edad = $ hoy ->diff ($ fechaNacimiento );
65
+ return $ edad ->y ;
66
+ }
67
+
68
+ function esBisiesto ($ año ) {
69
+ return date ('L ' , strtotime ("$ año-01-01 " )) == 1 ;
70
+ }
71
+
72
+ // Ejemplo de uso de funciones auxiliares
73
+ echo "\nFUNCIONES AUXILIARES: \n" ;
74
+ echo "Edad calculada: " . obtenerEdad ($ fechaNacimiento ) . " años \n" ;
75
+ echo "¿El año de nacimiento es bisiesto? " .
76
+ (esBisiesto ($ fechaNacimiento ->format ('Y ' )) ? "Sí " : "No " ) . "\n" ;
77
+ ?>
0 commit comments