Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: basickdagger en 20 Agosto 2013, 00:46 am



Título: imprime mal fecha (solucionado)
Publicado por: basickdagger en 20 Agosto 2013, 00:46 am
bueno tengo una duda y es q hasta apenas me di cuenta de q al imprimir un campo de fecha este me imprime una fecha de 1969-12-31...


q estoy haciendo mal??


Código:
$fecha=$_POST['fecha'];
echo $fecha;  /***me imprime 14/8/2013  ***/

$fecha2=date("Y-m-d",strtotime($fecha));

echo $fecha2;/**** me imprime 1969-12-31****/


utilizo jquery calendar....

lo raro es q aveces si me coloca bn la fecha y a veces no...aun no encuentro cuando es q me imprime bien y cuando no...

alguna idea??





Título: Re: imprime mal fecha
Publicado por: basickdagger en 20 Agosto 2013, 01:00 am
bueno picandole un poco eh notado q si coloco una fecha q este entre el dia 1 y el dia 12..la fecha se coloca bien...pero despues del dia 12 osea dia 13 en adelante se va todo por el caño... ya probe dia mes y año asi como año mes dia pero me sucede lo mismo...alguna idea?


Título: Re: imprime mal fecha
Publicado por: 1mpuls0 en 20 Agosto 2013, 01:36 am
.-. y qué se supone que esperas que muestre?, o que quieres hacer?
lee bien que hace la función strtotime y que formatos acepta.

Además agrega la zona horaria correspondiente, bueno depende de lo que vayas a realizar.

Código
  1. date_default_timezone_set('America/Mexico_City');
  2.  

strtotime("2013/8/14") != strtotime("14/8/2013")


Título: Re: imprime mal fecha
Publicado por: basickdagger en 20 Agosto 2013, 18:29 pm
.-. y qué se supone que esperas que muestre?, o que quieres hacer?
lee bien que hace la función strtotime y que formatos acepta.

Además agrega la zona horaria correspondiente, bueno depende de lo que vayas a realizar.

Código
  1. date_default_timezone_set('America/Mexico_City');
  2.  

strtotime("2013/8/14") != strtotime("14/8/2013")

intento meter la fecha en una BD para luego mostrarla... si no lo convierto, en la bd me lo inserta así 0000-00-00, entonces al cambiar la fecha noto q inserta la fecha correcta solo si el día es del 1 al 12.... supongo q esta tomando el día como mes y al no existir el mes 13 en adelante me pone esa fecha por default(supongo), el detalle aqui es q no me sale.. probe tu código default time zone y me sale lo mismo...


Título: Re: imprime mal fecha
Publicado por: 1mpuls0 en 20 Agosto 2013, 18:42 pm
intento meter la fecha en una BD para luego mostrarla... si no lo convierto, en la bd me lo inserta así 0000-00-00, entonces al cambiar la fecha noto q inserta la fecha correcta solo si el día es del 1 al 12.... supongo q esta tomando el día como mes y al no existir el mes 13 en adelante me pone esa fecha por default(supongo), el detalle aqui es q no me sale.. probe tu código default time zone y me sale lo mismo...

En realidad el problema no está con la zona horaria, solo era un consejo para futuras aplicaciones.
El problema es el formato.

Vamos por paso.

Recibes una variable por post y la guardas
$fecha=$_POST['fecha'];

Se muestra así: 14/8/2013

Si separamos esta linea: $fecha2=date("Y-m-d",strtotime($fecha)); A
$str = strtotime($fecha);
$fecha2=date("Y-m-d", $str);

Al imprimir $str verás que no te muestra nada, esto es porque strtotime no acepta ese formato, sino acepta el formato aaaa-mm-dd en tu caso tendrías que pasar el valor 2013/8/14 (al revés de como lo tienes en la variable $fecha)

Código
  1. <?php
  2. date_default_timezone_set('America/Mexico_City');
  3. echo $date="14/8/2013";
  4.  
  5. list($day, $mouth, $year) = explode('/', $date);
  6. $aux_date=$year."/".$mouth."/".$day;
  7.  
  8. $new_date=date("Y-m-d",strtotime($aux_date));
  9.  
  10. echo "<br>".$new_date;
  11. ?>
  12.  


Título: Re: imprime mal fecha
Publicado por: basickdagger en 20 Agosto 2013, 19:12 pm
En realidad el problema no está con la zona horaria, solo era un consejo para futuras aplicaciones.
El problema es el formato.

Vamos por paso.

Recibes una variable por post y la guardas
$fecha=$_POST['fecha'];

Se muestra así: 14/8/2013

Si separamos esta linea: $fecha2=date("Y-m-d",strtotime($fecha)); A
$str = strtotime($fecha);
$fecha2=date("Y-m-d", $str);

Al imprimir $str verás que no te muestra nada, esto es porque strtotime no acepta ese formato, sino acepta el formato aaaa-mm-dd en tu caso tendrías que pasar el valor 2013/8/14 (al revés de como lo tienes en la variable $fecha)

Código
  1. <?php
  2. date_default_timezone_set('America/Mexico_City');
  3. echo $date="14/8/2013";
  4.  
  5. list($day, $mouth, $year) = explode('/', $date);
  6. $aux_date=$year."/".$mouth."/".$day;
  7.  
  8. $new_date=date("Y-m-d",strtotime($aux_date));
  9.  
  10. echo "<br>".$new_date;
  11. ?>
  12.  



Mucha gracias me sirvió excelente... aunque me quede con la duda y aún así quiero preguntarte aunque parezca terco xD....

por que al utilizar una fecha por ejemplo...

01/8/2013 hasta  12/8/2013
si me funcionaba el strtotime....

y note tamboen q el día me lo tomaba como mes al colocarle  10/18/2013... y me lo imprimía así al usar strtotime

18/10/2013...

es algo raro... al menos aún no puedo comprenderlo muy bien.. aunque si entiendo el ejemplo que me das(que si me sirvio) donde separa la fecha y la colocas en el orden a Y-m-d...

bueno.. saludos y gracias


Título: Re: imprime mal fecha
Publicado por: 1mpuls0 en 20 Agosto 2013, 19:40 pm
Bien...

Algunos formatos reconocidos son:

mm/dd/yyyy
mm/dd/yy
yyyy/mm/dd
dd-mm-yyyy
yy-mm-dd
yyyy-mm-dd

Más Información -> http://www.php.net/manual/es/datetime.formats.date.php (http://www.php.net/manual/es/datetime.formats.date.php)

Por ejemplo si la fecha es 3 de Febrero de 2009 (que se nos mostraría como 03/02/2009), al pasarlo por strtotime nos devolverá el timestamp del 2 de Marzo de 2009, es decir, pensará que le estamos pasando una fecha en formato mm/dd/yyyy.

Para solucionar esto, podemos cambiar las barras por guiones antes de aplicarle la función strtotime. Por ejemplo:

<?php
$fecha_esp = str_replace("/", "-", $fecha_ing);
$timestamp = strtotime($fecha_esp);
?>
En este caso, al pasar a strtotime la fecha en formato dd-mm-yyyy devolverá el timestamp correcto.

Saludos.


Título: Re: imprime mal fecha
Publicado por: basickdagger en 20 Agosto 2013, 19:54 pm
Muchas gracias más claro que el agua....abra que hacer la prueba... gracias por tomarte el tiempo de responder.. saludos