Cómo definir la zona horaria de tu web con PHP o .htaccess
Los servidores de hosting suelen estar configurados con la zona horaria UTC por defecto, lo que puede hacer que las fechas y horas que muestra tu web no coincidan con la hora local de España. Para corregirlo es necesario definir la variable date.timezone de PHP, que controla cómo PHP interpreta y muestra las fechas y horas en tu aplicación.
Hay tres formas de hacerlo según tu caso de uso: mediante el archivo .htaccess, mediante un archivo PHP, o directamente en wp-config.php si usas WordPress.
Zonas horarias más comunes para España
| Zona horaria | Identificador PHP | Corresponde a |
|---|---|---|
| España peninsular y Baleares | Europe/Madrid |
CET (UTC+1) / CEST (UTC+2 en verano) |
| Islas Canarias | Atlantic/Canary |
WET (UTC+0) / WEST (UTC+1 en verano) |
| UTC (sin ajuste) | UTC |
Hora universal coordinada |
| Ciudad de México | America/Mexico_City |
CST (UTC-6) / CDT (UTC-5 en verano) |
| Buenos Aires | America/Argentina/Buenos_Aires |
ART (UTC-3) |
Puedes consultar la lista completa de identificadores de zona horaria válidos en la documentación oficial de PHP.
Método 1 — Definir la zona horaria en el archivo .htaccess
Este método es el más sencillo y afecta a todos los scripts PHP del directorio donde se coloca el .htaccess. Es el recomendado para la mayoría de sitios — no requiere modificar el código de la aplicación.
Abre el archivo .htaccess en la raíz de tu web (desde el Administrador de Archivos de cPanel o por FTP) y añade la siguiente línea:
php_value date.timezone 'Europe/Madrid'
Sustituye Europe/Madrid por el identificador de zona horaria que corresponda a tu caso. Guarda el archivo — el cambio surte efecto de forma inmediata para todos los scripts PHP del dominio.
ℹ️ El archivo .htaccess puede estar oculto en el Administrador de Archivos. Para verlo activa la opción «Mostrar archivos ocultos» en los ajustes del Administrador de Archivos.
Método 2 — Definir la zona horaria en un archivo PHP
Este método es útil cuando quieres aplicar la zona horaria solo a un script concreto, o cuando no tienes acceso para editar el .htaccess. Debes añadir la función date_default_timezone_set() al inicio de cada archivo PHP donde necesites la zona horaria correcta.
<?php
date_default_timezone_set('Europe/Madrid');
?>
Verificar que el cambio surte efecto
Para confirmar que la zona horaria se está aplicando correctamente, puedes crear un archivo de prueba (por ejemplo hora.php) en la raíz de tu dominio con el siguiente código y acceder a él desde el navegador:
<?php
date_default_timezone_set('Europe/Madrid');
echo date("H:i:s - d/m/Y");
?>
Accede a tudominio.com/hora.php — debería mostrarse la hora actual de Madrid. Una vez verificado, puedes eliminar el archivo de prueba.
⚠️ No dejes el archivo de prueba en producción — no representa ningún riesgo de seguridad en sí mismo, pero es buena práctica no dejar archivos de prueba accesibles públicamente.
Método 3 — Definir la zona horaria en WordPress
Si tu sitio usa WordPress, hay dos formas de configurar la zona horaria:
Desde el panel de administración de WordPress (recomendado)
Ve a WordPress → Ajustes → Generales → Zona horaria. Selecciona la ciudad o zona horaria correspondiente en el desplegable y haz clic en «Guardar cambios». WordPress aplicará esta configuración a todas las fechas del sitio (publicaciones, comentarios, tareas programadas con WP-Cron).
En wp-config.php (opcional, para forzar la zona horaria en PHP)
Si necesitas que también los scripts PHP del servidor usen la misma zona horaria (no solo WordPress), añade esta línea en wp-config.php antes de /* That's all, stop editing! */:
date_default_timezone_set('Europe/Madrid');
Errores frecuentes al configurar la zona horaria
El cambio en .htaccess no surte efecto
En algunos servidores con CloudLinux y el handler alt-php, la directiva php_value en el .htaccess puede no funcionar. En ese caso usa el Método 2 (añadir date_default_timezone_set() en el código PHP) o configura la zona horaria desde el Selector PHP de cPanel en Software → Seleccionar versión de PHP → Opciones → date.timezone. Consulta la guía cómo modificar los valores de PHP en cPanel.
La hora mostrada es incorrecta a pesar de haber configurado la zona horaria
Verifica que el identificador de zona horaria es correcto y está bien escrito — PHP distingue mayúsculas y minúsculas en los identificadores de zona horaria (Europe/Madrid es correcto; europe/madrid o Europa/Madrid generarán un error). Comprueba también que no tienes otra llamada a date_default_timezone_set() más adelante en el código que sobreescriba el valor.
El horario de verano no se aplica correctamente
Usar una zona horaria geográfica como Europe/Madrid aplica automáticamente el cambio de horario de verano (CET/CEST). Si usas un offset numérico como UTC+1, el cambio de horario de verano NO se aplica automáticamente. Para que el horario de verano se gestione solo, usa siempre identificadores geográficos (Europe/Madrid) en lugar de offsets fijos.
Preguntas frecuentes sobre zona horaria en PHP
¿Cómo cambiar la zona horaria de PHP en el hosting de Nicalia?
Hay tres métodos: (1) en el .htaccess, añade: php_value date.timezone 'Europe/Madrid'; (2) en el código PHP, añade al inicio: date_default_timezone_set('Europe/Madrid');; (3) en WordPress, ve a Ajustes → Generales → Zona horaria.
¿Cuál es el identificador de zona horaria de España en PHP?
Para España peninsular y Baleares: Europe/Madrid. Para las Islas Canarias: Atlantic/Canary. Estos identificadores aplican automáticamente el cambio de horario de verano.
¿Por qué la hora de mi web no coincide con la hora española?
Porque el servidor está configurado con la zona horaria UTC (hora universal) por defecto. España tiene UTC+1 en invierno y UTC+2 en verano, por lo que hay una diferencia de 1-2 horas. Para corregirlo debes definir date.timezone = Europe/Madrid en la configuración de PHP de tu dominio.
¿La configuración en .htaccess afecta a todos los dominios de mi hosting o solo a uno?
Solo al directorio donde está el .htaccess y todos sus subdirectorios. Si tienes varios dominios en la misma cuenta de cPanel cada uno tiene su propia carpeta y su propio .htaccess, por lo que debes configurar la zona horaria en cada uno de forma independiente.
¿Puedo configurar la zona horaria desde cPanel sin editar archivos?
Sí. En cPanel ve a Software → Seleccionar versión de PHP → Opciones y modifica el valor de date.timezone. Este método aplica la zona horaria a nivel de cuenta para la versión de PHP seleccionada, sin necesidad de editar el .htaccess ni el código. Consulta la guía cómo modificar los valores de PHP en cPanel.
