informatica:programacion:php:snippets:fechas
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:programacion:php:snippets:fechas [2021/06/30 15:24] – [Recursos] tempwin | informatica:programacion:php:snippets:fechas [2025/06/18 15:57] (actual) – [UTC a otra zona horaria] tempwin | ||
|---|---|---|---|
| Línea 14: | Línea 14: | ||
| $fecha = new DateTime(" | $fecha = new DateTime(" | ||
| </ | </ | ||
| + | |||
| + | A partir de cualquier fecha con cierto formato: | ||
| + | |||
| + | <code php> | ||
| + | $fecha = DateTime:: | ||
| + | </ | ||
| + | |||
| + | Primer día del mes en curso: | ||
| + | |||
| + | <code php> | ||
| + | $fecha = new DateTime(" | ||
| + | </ | ||
| + | |||
| + | Primer día del mes pasado: | ||
| + | |||
| + | <code php> | ||
| + | $fecha = new DateTime(" | ||
| + | </ | ||
| + | |||
| + | Último día del mes en curso: | ||
| + | |||
| + | <code php> | ||
| + | $fecha = new DateTime(" | ||
| + | </ | ||
| + | |||
| + | Último día del mes pasado: | ||
| + | |||
| + | <code php> | ||
| + | $fecha = new DateTime(" | ||
| + | </ | ||
| + | |||
| + | Último domingo: | ||
| + | |||
| + | <code php> | ||
| + | $fecha = date(" | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Para más información, | ||
| + | </ | ||
| ==== Semanas ==== | ==== Semanas ==== | ||
| Línea 28: | Línea 68: | ||
| Año según el número de la semana ISO-8601. Esto tiene el mismo valor que '' | Año según el número de la semana ISO-8601. Esto tiene el mismo valor que '' | ||
| </ | </ | ||
| + | |||
| + | Fecha de inicio de cierta semana del año: | ||
| + | |||
| + | <code php> | ||
| + | $ano = 2022; | ||
| + | $semana = 49; | ||
| + | |||
| + | $fecha_inicio_semana = date(" | ||
| + | </ | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | |||
| ===== Intervalos ===== | ===== Intervalos ===== | ||
| Línea 129: | Línea 182: | ||
| | | ||
| echo (getWorkingHoursInSeconds($f, | echo (getWorkingHoursInSeconds($f, | ||
| + | </ | ||
| + | |||
| + | ==== Número de lunes entre fechas ==== | ||
| + | |||
| + | <code php> | ||
| + | // Calcular número de lunes entre fechas | ||
| + | function getMondaysInRange($dateFromString, | ||
| + | $dateFrom = new \DateTime($dateFromString); | ||
| + | $dateTo = new \DateTime($dateToString); | ||
| + | $dates = []; | ||
| + | |||
| + | if ($dateFrom > $dateTo) { | ||
| + | return $dates; | ||
| + | } | ||
| + | |||
| + | if (1 != $dateFrom-> | ||
| + | $dateFrom-> | ||
| + | } | ||
| + | |||
| + | while ($dateFrom <= $dateTo) { | ||
| + | $dates[] = $dateFrom-> | ||
| + | $dateFrom-> | ||
| + | } | ||
| + | |||
| + | return $dates; | ||
| + | } | ||
| + | |||
| + | $dateFromString = ' | ||
| + | $dateToString = ' | ||
| + | var_dump(getMondaysInRange($dateFromString, | ||
| + | |||
| </ | </ | ||
| ===== Modificación ===== | ===== Modificación ===== | ||
| Línea 167: | Línea 251: | ||
| $timeFormat = sprintf(' | $timeFormat = sprintf(' | ||
| </ | </ | ||
| + | |||
| + | ==== UTC a otra zona horaria ==== | ||
| + | |||
| + | Si tenemos un string con una fecha en UTC, por ejemplo: | ||
| + | |||
| + | < | ||
| + | 2025-08-31 19: | ||
| + | </ | ||
| + | |||
| + | Para pasarla a la zona horaria de España: | ||
| + | |||
| + | <code php> | ||
| + | $fechaString = " | ||
| + | |||
| + | // Creamos un objeto DateTime indicando explícitamente que la cadena de fecha está en UTC | ||
| + | $fechaUTC = new DateTime($fechaString, | ||
| + | |||
| + | $fechaES = clone $fechaUTC; | ||
| + | |||
| + | // Pasamos a la zona horaria de España: | ||
| + | $fechaES-> | ||
| + | </ | ||
| + | |||
| + | PHP maneja automáticamente el cambio horario de verano/ | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | El horario de verano en España se cambia el último domingo de marzo y serían 2 horas sobre UTC (UTC+2). En el de invierno, que se cambia el último domingo de octubre, sería 1 hora sobre UTC (UTC+1). Al horario de verano también se le llama **DST**, de //Daylight Saving Time//, que sería algo como " | ||
| + | </ | ||
| + | |||
| ===== Recursos ===== | ===== Recursos ===== | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
informatica/programacion/php/snippets/fechas.1625059450.txt.gz · Última modificación: por tempwin
