Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:snippets:fechas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:snippets:fechas [2022/12/12 09:28] – [Semanas] tempwininformatica:programacion:php:snippets:fechas [2025/06/18 15:57] (actual) – [UTC a otra zona horaria] tempwin
Línea 43: Línea 43:
 <code php> <code php>
 $fecha = new DateTime("last day of last month"); $fecha = new DateTime("last day of last month");
 +</code>
 +
 +Último domingo:
 +
 +<code php>
 +$fecha = date("Y-m-d", strtotime("last week sunday"));
 </code> </code>
  
Línea 67: Línea 73:
 <code php> <code php>
 $ano = 2022; $ano = 2022;
-$semana = 34;+$semana = 49;
  
-$mes_semana = date("m", strtotime($ano . "W" . $semana); +$fecha_inicio_semana = date("Y-m-d", strtotime($ano . "W" . $semana)); // 2022-12-05
-$dia_inicio_semana = date("d", strtotime($ano . "W" . $semana)); +
-$fecha_inicio_semana_dt = new DateTime($ano . "-" . $mes_semana . "-" . $dia_inicio_semana);+
 </code> </code>
 +
 +  * [[https://stackoverflow.com/questions/1659551/how-to-get-the-first-day-of-a-given-week-number-in-php-multi-platform|How to get the first day of a given week number in PHP (multi-platform)?]]
 +
 +
 ===== Intervalos ===== ===== Intervalos =====
  
Línea 243: Línea 251:
 $timeFormat = sprintf('%02d:%02d:%02d', $horas, $minutos, $segundos); $timeFormat = sprintf('%02d:%02d:%02d', $horas, $minutos, $segundos);
 </code> </code>
 +
 +==== UTC a otra zona horaria ====
 +
 +Si tenemos un string con una fecha en UTC, por ejemplo:
 +
 +<code>
 +2025-08-31 19:57:25.000000 UTC
 +</code>
 +
 +Para pasarla a la zona horaria de España:
 +
 +<code php>
 +$fechaString = "2025-08-31 19:57:25.000000 UTC";
 +
 +// Creamos un objeto DateTime indicando explícitamente que la cadena de fecha está en UTC
 +$fechaUTC = new DateTime($fechaString, new DateTimeZone('UTC'));
 +
 +$fechaES = clone $fechaUTC;
 +
 +// Pasamos a la zona horaria de España:
 +$fechaES->setTimezone(new DateTimeZone('Europe/Madrid'));
 +</code>
 +
 +PHP maneja automáticamente el cambio horario de verano/invierno (último domingo de marzo,+2h CEST, último domingo de octubre, +1h CET).
 +
 +<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 "Horario de ahorro de luz diurna".
 +</WRAP>
 +
 ===== Recursos ===== ===== Recursos =====
  
   * [[https://www.webfx.com/blog/web-design/php-dateinterval-class/|An Introduction to the PHP DateInterval Class]]   * [[https://www.webfx.com/blog/web-design/php-dateinterval-class/|An Introduction to the PHP DateInterval Class]]
   * [[https://www.php.net/manual/es/datetime.formats.relative.php|Formatos de fecha relativos]]   * [[https://www.php.net/manual/es/datetime.formats.relative.php|Formatos de fecha relativos]]
informatica/programacion/php/snippets/fechas.1670833728.txt.gz · Última modificación: por tempwin