Pregunta

Tengo una tabla de MySQL que se basa en el tiempo de tiempo UNIX equivalente sello de la fecha de entrada para ordenar y filtrar en varias partes de la página web. Estoy tratando de implementar un selector de fechas que se introduzca la fecha en el campo de formulario en el formato dd / mm / aaaa. He estado luchando con la conversión de esa fecha en el formato de tiempo UNIX para agregar que la entrada en el campo de fila. Todos los intentos que he hecho han dado lugar a la generación de la marca de hora del día actual época. ¿Alguien tiene alguna idea de cómo puedo tomar ese formato de fecha y convertir en el sello de tiempo de que época equivalente?

Gracias de antemano.

Información adicional:

He estado tratando de mktime, y todo lo que consigo es la época del día de hoy. Disculpas, debería haber añadido algo de código anterior para explicar mejor:

La forma id es "fecha" El campo de base de datos está "época"

Esto es lo que estoy intentando (sin éxito) cuando publico la Fecha:

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

Yo entiendo de un post anterior que esto todavía presentar el valor como dd / mm / aaaa y no mm, dd, aaaa como mktime espera, sin embargo, el mensaje no ofrecer y resolución sobre cómo hacerlo. He intentado un str_replace para cambiar el "/" a "" y que yeilded el mismo resultado - conseguir la fecha época actual, independientemente de la fecha introducida

.

Aquí está el ejemplo de código - de nuevo esto no funcionaba, pero agregarlo a ayudar a ilustrar lo que he tratado

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

Gracias por la respuesta anterior, así, yo no quería que la rápida respuesta para pasar desapercibido!

Gracias a todos!

Gracias a todos por las respuestas - strtotime parece estar funcionando mejor en las pruebas iniciales y puede ser el camino a seguir ya que este formato sea coherente en todo el sitio. Pero todas las sugerencias que ayudaron con esto algunas otras cosas así que todo bien gracias a todos de nuevo!

¿Fue útil?

Solución

Si sabe que siempre va a estar en ese formato, strtotime lo convertirá directamente en la marca de tiempo Unix.

strtotime($_POST['app_date']);

HTH!

Otros consejos

Usted debe mirar la href="http://lv2.php.net/manual/en/function.mktime.php" rel="nofollow noreferrer"> mktime () función strtotime () , y lo tendrás.

if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);

Vas a necesitar para enviar la dd, mm, aaaa como VARs separadas a mktime. Toma el valor de $ epochold2 como una cadena que sería válido para mktime.

Su mejor opción sería utilizar el strtotime como he dicho anteriormente, o seguir los consejos de Ant P utilizando mktime.

strtotime () analizará casi cualquier formato de fecha y devolver la marca de tiempo Unix. Todo lo que tiene que hacer es pasarlo a su cadena de fecha / hora:

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

Como se puede ver arriba, incluso se puede utilizar para ayudar a validar la entrada -. Si un usuario introduce una fecha como 2/31/2008, devolverá -1

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