strtotime
(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Convierte una descripción de fecha/hora textual en Inglés a una fecha Unix
Descripción
Esta función espera que se proporcione una cadena que contenga un formato de fecha
en Inglés US e intentará convertir ese formato a una fecha Unix (el
número de segundos desde el 1 de Enero del 1970 00:00:00 UTC), relativa
a la marca de tiempo dada en now
, o la marca de tiempo
actual si now
no se proporciona.
Cada parámetro de esta función utiliza la zona horaria predeterminada a menos que
se especifique una en ese parámetro. Se ha de tener cuidado de no usar
diferentes zonas horarias en cada parámetro a menos que sea esa la intención.
Véase la función date_default_timezone_get() para las diferentes
maneras de definir la zona horaria predeterminada.
Parámetros
time
-
Una cadena de fecha/hora. Los formatos válidos se explican en Formatos de fecha y hora.
now
-
La marca de tiempo que se usa como base para el cálculo de las
fechas relativas.
Valores devueltos
Devuelve una marca de tiempo si se tuvo éxito, false
si no. Antes de PHP 5.1.0,
esta funcion devolvía -1
si fallaba.
Errores/Excepciones
Cada vez que se llame a una función de fecha/hora se generará un E_NOTICE
si la zona horaria no es válida, y/o un mensaje E_STRICT
o E_WARNING
si se emplea la configuración del sistema o la variable global
TZ. Véase también date_default_timezone_set()
Ejemplos
Ejemplo #1 Un ejemplo de strtotime()
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
Ejemplo #2 Comprobar si falla
<?php
$cadena = 'No Válida';
// antes de PHP 5.1.0 se debería de comparar con -1, en vez de con false
if (($timestamp = strtotime($cadena)) === false) {
echo "La cadena ($cadena) es falsa";
} else {
echo "$cadena == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>
Notas
Nota:
Si el número del año se especifica en un formato de dos dígitos, los valores
entre 00-69 hacen referencia a 2000-2069 y 70-99 a 1970-1999. Vea las notas de abajo
para las posibles diferencias en sistemas de 32 bit (las fechas posibles podrían terminar en
2038-01-19 03:14:07).
Nota:
El rango válido de una marca de tiempo es típicamente desde Fri, 13 Dec
1901 20:45:54 UTC a Tue, 19 Jan 2038 03:14:07 UTC. (Estas son
las fechas que se corresponden con los valores máximo y mínimo de
un entero con signo de 32 bit.)
Antes de PHP 5.1.0, no todas las plataformas admitían marcas de tiempo negativas, por lo que
el rango de fechas puede estar limitado a no anteriores a la época Unix. Esto
significa que, p.ej., las fechas anteriores al 1 de enero de 1970 no funcionarán en Windows,
en algunas distribuciones de Linux, y en otros pocos sistemas operativos.
Para PHP versión 64-bit, el rángo válido de fechas es en la práctica infinito,
ya que 64 bits pueden representar aproximadamente 293.000 millones de años en
cualquier dirección.
Nota:
Las fechas en los formatos m/d/y
o d-m-y
no son ambiguas al observar el separador entre los distintos
componentes: si el separador es una barra (/
), se asume
el formato norteamericano m/d/y
; mientras que si el separador es un
guion (-
) o un punto (.
), se asume
el formato europeo d-m-y
.
Si, sin embargo, el año se proporciona en un formato de dos dígitos y el separador es un
guion (-
), la cadena de la fecha se analiza como
y-m-d
.
Para evitar esta ambigüedad potencial es mejor usar fechas ISO 8601
(YYYY-MM-DD
) o
DateTime::createFromFormat() cuando sea posible.
Nota:
No es aconsejable utililzar esta función para operaciones matemáticas.
Es mejor usar los métodos DateTime::add() y
DateTime::sub() de PHP 5.3 y posterior, o
el método DateTime::modify() de PHP 5.2.