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");
¿Fue útil?

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()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top