Php strtotime () función que acepta un formato?
Pregunta
strtotime()
En PHP funciona muy bien si puede proporcionarle un formato de fecha que comprenda y puede convertir, pero, por ejemplo, le da una fecha del Reino Unido, no le da la marca de tiempo UNIX correcta.
¿Existe alguna función de PHP, oficial o no oficial, que pueda aceptar una variable de formato que indique la función en la que se pasa la fecha y la hora?
Lo más cerca que he llegado a hacer esto es una mezcla de date_parse_from_format()
y mktime()
// Example usage of the function I'm after
//Like the date() function but in reverse
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s");
Solución
Si tiene PHP 5.3:
$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();
Otros consejos
Estás buscando rtptime, Pienso. Puede usarlo para analizar la fecha y luego usar mktime Si necesita una marca de tiempo UNIX.
function strotimeformat($date, $format) {
$d = strptime($date, $format);
return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
$d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}
Esto funcionará con PHP 5.1 y en adelante.
strtotime
asume que es una fecha/hora en los EE. UU. Cuando se usa /
como el separador. Para que piense que es una fecha/hora del euro, use -
o .
como el separador de fecha. Puedes cambiar el /
s para -
s o .
s con un simple str_replace()