2010-07-20 79 views
14

Tengo un calendario jquery que establece el valor de entrada en MM/DD/YYYYCómo convertir MM/DD/YYYY a YYYY-MM-DD?

¿Cómo lo convertiría para que mi columna de base de datos (fecha) pueda aceptarlo correctamente?

EDITAR

Gordon tenía razón - su enlace me señaló a esta respuesta

$mysql_date = date('Y-m-d H:i:s', strtotime($user_date)); 
+14

¿Realmente no hay [respuesta] (http://stackoverflow.com/search?q=How+to+convert+MM%2FDD%2FYYYY+to+YYYY -MM-DD% 3F + php) ¿Eso te daría eso? – Gordon

+3

Estoy bastante seguro de que la mayoría de los complementos de jQuery se pueden configurar, incluso su formato de fecha. – Piskvor

+0

Otra opción es dejar como está y dejar que el DB haga la conversión –

Respuesta

33
$date = "07/12/2010"; 
$your_date = date("Y-m-d", strtotime($date)); 

espero que mi respuesta es útil :)

+14

Es importante tener en cuenta la diferente interpretación de '-' y'/'en la fecha. Si utiliza un '-' php determinará que sea DD-MM, si utiliza un'/'php determinará que sea MM-DD. – Devon

+0

Gracias @Devon por brindar información útil. –

+0

Solo una nota en el comentario de @Devon, no sabía que PHP actuó de esta manera y, en mi opinión, es realmente una mala manera de actuar, ya que dará lugar a errores porque hay lugares (como Brasil) donde la fecha el formato es "DD/MM/YYYY" y porque '/' se está utilizando PHP determinará ** erróneamente ** que sea "MM-DD". –

10

que quiere hacer esto en PHP, ¿verdad?

  1. Uso Explota

    $christmas = "12/25/2010"; 
    $parts = explode('/',$christmas); 
    $yyyy_mm_dd = $parts[2] . '-' . $parts[0] . '-' . $parts[1] 
    
  2. Uso strptime analizarlo a una marca de tiempo y luego strftime para formatearlo la forma que desee.

2

Necesitamos más información?

1) ¿Qué secuencia de comandos está insertando en la base de datos? Estoy asumiendo PHP

2) También necesitamos saber cómo está almacenando la fecha y en qué formato?

Mi solución sería:

$dates = preg_split('/\//',$_POST['date']); 

$month = $dates[0]; 
$day = $dates[1]; 
$year = $dates[2]; 

$finalDate = $year.'-'.$month.'-'.$day; 
1

voy a sugerir a utilizar strtotime() función y luego date(). Con esto puedes convertir cualquier formato de fecha.

$unix_time_stamp = strtotime($mm_dd_yyyy); 
$yyyy_mm_dd = date(Y/m/d,$unix_timestamp); 
+0

Solucione los errores de sintaxis, por favor. – Gordon

1

Alternativamente, usted puede hacer esto sin usar el explode:

$date = "12/25/2010"; 
$mysql_date = date('Y-m-d', strtotime($date)); 

Ahora puede utilizar $mysql_date para insertar en su base de datos.

0

si lo que desea es una línea intente esto:

$time = "07/12/2010"; 

$new_time = preg_replace("!([01][0-9])/([0-9]{2})/([0-9]{4})!", "$3-$1-$2", $time); 

var_dump($time); 
var_dump($new_time); 
-1

Prueba el siguiente código:

$date = "01-14-2010"; 
echo $your_date = date("Y-m-d", strtotime($date)); 

Se hará eco 1969-12-31.

0

asignar los valores de fecha a la variable $d

$dob denota la fecha que desea convertir

$d= date('Y-m-d',strtotime ($dob)); 
1

Prueba esto:

$date = explode('/', '16/06/2015'); 

$new = date('Y-m-d H:i:s', strtotime(implode('-', array_reverse($date)))); 

devoluciones: 06/15/2015 00: 00:00

Espero que esto ayude!

3

Pruebe el siguiente código,

<?php 
$date = "10/24/2014"; 
$date = DateTime::createFromFormat("m/d/Y" , $date); 
echo $date->format('Y-m-d'); 
?> 
+0

Me gustó esta respuesta porque es más flexible, ya que PHP no tiene que adivinar nada, está pasando los formatos de fecha de (m/d/Y) a (Y-m-d). –