
Hola Bienvenid@ al curso "Manejo de fechas y horas en PHP". Gracias por confiar en mi como tu instructor. Este curso ha sido realizado con el mayor empeño y espero que cubra tus expectativas. Si sientes en algún momento que el curso no lo comprendes o que tienes muchas dudas: PREGUNTA, que con todo gusto te ayudare a despejar tus dudas, así también si tienes alguna sugerencia de cómo mejorar el curso, así como más contenido, también puedes hacérmelo saber.
1. Instalar la plataforma Apache-MySQL-PHP en su computadora como XAMPP, MAMP, LAMP o WAMP o es su defecto, contar con un servidor remoto con PHP.
2. Un navegador moderno.
3. Un editor de código como Sublime Text, Aptana, Brackets, Atom o Dreamweaver (cualquier versión).
4. Si se cuenta con un servidor remoto, necesitarás un FTP o cPanel.
En esta clase encontrarás todos los archivos del curso y el PDF de todas las secciones.
En este video podemos instalar dos plugins para mejorar la programación de PHP con Sublime Text 3.
PHPDocs es una adaptación de JavaDocs para documentar la programación en PHP.
Apuntes a la sección 1: Introducción al manejo de fechas en PHP
Fechas y horas están almacenadas como timestamp o marcas de tiempo, el número consecutivo de segundos transcurridos desde la hora cero de UNIX: el 1o. de enero de 1970.
Las fechas y tiempos están almacenadas en enteros de 32 bits, es decir, tienen un rango de 4.2 billones de segundos, negativos y positivos.
Podemos almacenar desde diciembre 31 de 1901 hasta el 19 de enero de 2038.
Debemos configurar la zona horaria en php.ini.
Si se tiene un servidor Apache, podemos utilizar un archivo .htaccess puede utilizar:
php_value date.zone ‘America/Mexico_City’
Desde el código del programa podemos utiliza:
date_default_timezone_set ( string $timezone_identifier ) : bool
Por medio de la función time() podemos limitar el tiempo de una sesión en PHP.
Para crear una sesión utilizamos session_start().
Para eliminar una sesión utilizamos session_destroy().
Creamos un formulario
Verifica la fecha
Calcula la edad
Apuntes a la sección 2
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Los objetos de la clase DateTime() almacenan información de la zona de tiempo.
Las zonas de tiempo de los objetos DateTime() son independientes del servidor.
No tiene el límite de 32 bits.
Puede analizar fechas en inglés.
Valida fechas.
Se pueden hacer cálculos de fecha con facilidad.
Apuntes a la sección 4: La clase DateTime()
DateTimeZone::getTransitions — Devuelve todas las transiciones para una zona horaria.
public DateTimeZone::getTransitions (
[ int $timestamp_begin = PHP_INT_MIN
[, int $timestamp_end = PHP_INT_MAX ]]
) : array
DateTimeZone::getTransitions — Devuelve todas las transiciones para una zona horaria.
public DateTimeZone::getTransitions (
[ int $timestamp_begin = PHP_INT_MIN
[, int $timestamp_end = PHP_INT_MAX ]]
) : array
El primero, [ts], es la marca de tiempo de cuándo cambiarán los relojes.
El segundo, [time], es también la fecha y hora en que cambiarán los relojes, en formato ISO.
El tercer elemento, [offset], es el desplazamiento desde UTC una vez que se ha producido el cambio de reloj.
El cuarto elemento, [isdst], indica si el horario de verano está en funcionamiento. Si el valor es uno, está en funcionamiento, si está vacío, significa que el horario de verano no está en funcionamiento.
El primero, [ts], es la marca de tiempo de cuándo cambiarán los relojes.
El segundo, [time], es también la fecha y hora en que cambiarán los relojes, en formato ISO.
El tercer elemento, [offset], es el desplazamiento desde UTC una vez que se ha producido el cambio de reloj.
El cuarto elemento, [isdst], indica si el horario de verano está en funcionamiento. Si el valor es uno, está en funcionamiento, si está vacío, significa que el horario de verano no está en funcionamiento.
DateTimeZone::getTransitions — Devuelve todas las transiciones para una zona horaria.
public DateTimeZone::getTransitions (
[ int $timestamp_begin = PHP_INT_MIN
[, int $timestamp_end = PHP_INT_MAX ]]
) : array
Apuntes a la sección 5: La clase DateTimeZone
DateInterval es similar a una cadena de fecha relativa, ya que representa un intervalo entre dos fechas u horas.
Almacena una cantidad fija de tiempo en años, meses, días, etc. y como es un objeto, a diferencia de una cadena de fecha relativa, no necesita analizarse cada vez que se usa.
DatePeriod, por otro lado, representa un rango de fechas.
La clase DateInterval nos simplificará el cálculo de dos objetos DateTime,considerando las zonas horarias y los horarios de verano DST.
El formato de DateInterval cambia los minutos a “i” en lugar de “m”.
Hay otras dos propiedades adicionales:
invert indica si el intervalo representa un período de tiempo negativo. Uno significa que es negativo, cero significa que es positivo.
days representa el número total de días.
Esta última propiedad tiene un valor solo cuando se creó DateInterval utilizando el método diff.
Aunque la clase DateTime también tiene un método de formato, DateInterval usa diferentes caracteres de formato.
Todos los caracteres de formato comienzan con un signo de porcentaje (%) seguido de una sola letra.
Por años, meses y días, la letra es la primera letra de la unidad.
Si la letra es minúscula, el valor se muestra como un número sin ceros a la izquierda.
La clase DatePeriod funciona junto con las clases DateTime y DateInterval para proporcionar una manera simple de generar una serie de fechas u horas a intervalos regulares.
Necesitamos pasar estos argumentos al constructor DatePeriod, la fecha de inicio es el primer argumento, el intervalo es el segundo argumento y el tercer argumento para el constructor DatePeriod debe ser el número de repeticiones o un objeto DateTime para la fecha de finalización.
Podemos determinar el primer lunes de los meses en un año.
Podemos determinar las fechas de pago, por ejemplo catorcenal.
Las fechas semanales ISO 8601 son diferentes de las fechas del calendario ordinario.
El sistema ISO Week Date System se utiliza principalmente en el gobierno y las empresas.
Este es el mismo estándar que recomienda formatear las fechas en el año, mes, día, el formato utilizado por MySQL y DB (indistinto).
El Sistema de Fecha Semana ISO 8601 ignora los meses.
Hay tres formas de crear un objeto DateTime para una fecha de semana ISO.
La forma más sencilla es pasar una fecha de semana ISO formateada como argumento para el constructor DateTime.
También puede usar una fecha de semana como argumento para el método de modificación modify().
PHP tiene dos funciones dedicadas que calculan la hora del amanecer y el atardecer para una ubicación y fecha en particular: date_sunrise y date_sunset.
Estas funciones toman seis argumentos. Aunque solo se requiere el primero, la marca de tiempo para la fecha, muchos de los otros suponen que tiene una latitud predeterminada, una longitud predeterminada y también el cenit del amanecer establecido en el archivo de configuración php.ini.
Todos los valores son marcas de tiempo. Los dos primeros elementos de la matriz, amanecer y atardecer, son bastante fáciles de entender. Es entonces cuando sale el sol o se hunde debajo del horizonte.
El tránsito se refiere al momento en que el sol está más alto en el cielo en un lugar particular en un día determinado. Es el equivalente del mediodía solar, pero normalmente está en un horario diferente en el reloj debido a las zonas horarias y las diferencias de longitud.
Apuntes de la sección 5: Las clases DateInterval y DatePeriod
En particular mi MySQL y MariaDB. Las bases de datos más utilizadas con PHP. El problema más importante es comprender las diferentes formas en que se almacenan las fechas.
PHP almacena las fechas internamente como marcas de tiempo de Unix.
MySQL y MariaDB, por otro lado, almacenan las fechas en un formato humano y legible. Similar a un calendario.
En MySQL para generar una fecha con la fecha actual usamos NOW().
Para seleccionar sólo la parte de la fecha en un campo DateTime, usamos la función DATE().
Para seleccionar la fecha actual utilizamos CURRENTDATE().
Una vez que obtenemos los datos desde un formulario de HTML, los validamos con PHP e Insertamos los datos en la base de datos.
Podemos leer los datos tipo fecha de la base de datos (MySQL) y lo interpretamos como cadena en formato ISO.
Creamos el objeto DateTime directamente.
Podemos leer los datos tipo fecha de la base de datos (MySQL) y lo interpretamos como cadena en formato ISO.
Crearemos la tabla de las tareas.
Crearemos la conexión a la base de datos.
Desplegaremos las tareas.
Podemos leer los datos tipo fecha de la base de datos (MySQL) y lo interpretamos como cadena en formato ISO.
Crearemos la tabla de las tareas.
Crearemos la conexión a la base de datos.
Desplegaremos las tareas.
Crearemos los procesos de Altas, Bajas y Cambio (actualizar) en archivos separados.
Apuntes a la sección 6: Manejo de fechas con MySQL y PHP
ColorZilla es una herramienta que nos permita detectar un color de un elemento de una página web.
Herramientas para armonizar colores en web.
Páginas para descargar fuentes e iconos
Crear gradientes de forma sencilla por medio de dos herramientas
Herramientas para las Cajas flexibles
Herramientas para objetos SVG y Curvas Bezier Cuadráticas
Herramienta para diseños display: grid;
Archivos del curso
Uno de los grandes dolores de cabeza cuando programas en PHP es el manejo de las fechas con las funciones heredadas desde la versión 4. Sin embargo, con las clase relacionadas a DateTime(), como son DateImmutable, DateTimeZone, DateInterval y DatePeriod convertiremos a PHP en una poderosa herramienta para el manejo de fechas internacionales, efectuar cálculos complejos y manejar cualquier tipo de formato. Los objetivos de este curso son:
Aprender los términos generales del manejo de fechas y tiempos en PHP
Reafirmar sus conocimientos en el manejo de las instrucciones heredadas de PHP4
Aprender a crear y manipular objetos de la clase DateTime
Aprender a crear objetos de la clase DateTimeZone para administrar las zonas de tiempo
Aprender a crear y manejar los objetos de la clase DateInterval y DatePeriod
Entender el proceso y formateo de fechas entre PHP y MySQL
Este curso es de nivel intermedio, por lo debes tener conocimientos generales de PHP, HTML y MySQL, está enfocado a desarrolladores web con conocimientos previos de PHP, HTML y MySQL. Contarás con los archivos y los apuntes de la clase.