Foros del Web » Programando para Internet » PHP »

convertir cadena a fecha

Estas en el tema de convertir cadena a fecha en el foro de PHP en Foros del Web. Hola como podria convertir una cadena php que es una fecha para poder trabajar con las funciones de php pongo el ejemplo. $fecha="20012000"; //esta variable ...
  #1 (permalink)  
Antiguo 07/03/2016, 04:52
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
convertir cadena a fecha

Hola como podria convertir una cadena php que es una fecha para poder trabajar con las funciones de php pongo el ejemplo.

$fecha="20012000";
//esta variable seria una fecha 20-01-2000, lo que necesito es sumarle un dia a esta fecha y compararla con la fecha actual para saber si es mayor o menor.
que posibilidades tengo para hacer esto?
gracias
  #2 (permalink)  
Antiguo 07/03/2016, 05:05
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: convertir cadena a fecha

podría ser algo asi:

Código PHP:
Ver original
  1. $fecha="20012000";
  2.  
  3. $f = (substr($fecha, 0, -6))+1;//sumamos un digito al día de esta fecha (21)
  4.  
  5. $f = $f.substr($fecha,-6);//reagrupamos nuevamente la fecha con la suma ya hecha (21012000)
  6.  
  7. //comparamos las fechas
  8. if($f >= $fecha){
  9. echo "La fecha es Mayor que ".$fecha;
  10. }else{
  11. echo "La fecha es menor que ".$fecha;
  12. }

aunque eso te va a traer algunos problemitas como por ejemplo la fecha 20012000 es mayor a 07032016 que es la fecha de hoy porque no esta comparando fecha sino montos y 20 millones siempre es mayos que 7 millones que es como lo va a tomar php
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 07/03/2016, 05:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: convertir cadena a fecha

Cita:
Iniciado por xfxstudios Ver Mensaje
podría ser algo asi:

Código PHP:
Ver original
  1. $fecha="20012000";
  2.  
  3. $f = (substr($fecha, 0, -6))+1;//sumamos un digito al día de esta fecha (21)
  4.  
  5. $f = $f.substr($fecha,-6);//reagrupamos nuevamente la fecha con la suma ya hecha (21012000)
  6.  
  7. //comparamos las fechas
  8. if($f >= $fecha){
  9. echo "La fecha es Mayor que ".$fecha;
  10. }else{
  11. echo "La fecha es menor que ".$fecha;
  12. }
gracias por tu ayuda pero no me vale, ya que seria comparar la fecha de la cadena con la actual esque si la comparas con la misma no tiene sentido, pero igual tampoco me sirve porque si es dia 31 y el sumas uno pasa a 32, yo lo que estoy haciendo es ponerle su guion correspondiente para fecha valida, despues con el objeto Date le añado un dia a la fecha con formato valido, despues creo otro objeto Date y comparo las dos fechas del objeto obtenido, pero no se si es mucho proceso para algo tan simple, haber si alguien sabe algo mas eficaz y rapido.
saludos.
  #4 (permalink)  
Antiguo 07/03/2016, 05:28
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: convertir cadena a fecha

todo tiene su proceso, si hay algo mas simple bueno te comento:
Código PHP:
Ver original
  1. $fecha="20012000";
  2. $actual = date("d-m-Y");
  3.  
  4.  
  5. function fecha($X, $Y){
  6.  
  7. $A = (substr($X, 0, -6));
  8. $B = substr($X, 2, -4);
  9. $C = substr($X, 4);
  10.  
  11. $fechaNueva = $A."-".$B."-".$C;
  12.  
  13.  
  14. $date1 = new DateTime($fechaNueva);
  15. $date2 = new DateTime($Y);
  16.  
  17.  
  18. $intervalo = $date1->diff($date2);
  19.  
  20.  
  21. $salida = $intervalo->format('%R%a');
  22.  
  23. return $salida;
  24.  
  25. }
  26.  
  27.  
  28. if(fecha($fecha, $actual) >= "+1"){
  29.  
  30. echo "La fecha ".$fecha." es menor que ".$actual;
  31.  
  32. }else{
  33.  
  34. echo "La fecha ".$fecha." es mayor que ".$actual;
  35.  
  36. }
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 07/03/2016, 05:34
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: convertir cadena a fecha

Cita:
Iniciado por xfxstudios Ver Mensaje
todo tiene su proceso, si hay algo mas simple bueno te comento:
Código PHP:
Ver original
  1. $fecha="20012000";
  2. $actual = date("d-m-Y");
  3.  
  4.  
  5. function fecha($X, $Y){
  6.  
  7. $A = (substr($X, 0, -6));
  8. $B = substr($X, 2, -4);
  9. $C = substr($X, 4);
  10.  
  11. $fechaNueva = $A."-".$B."-".$C;
  12.  
  13.  
  14. $date1 = new DateTime($fechaNueva);
  15. $date2 = new DateTime($Y);
  16.  
  17.  
  18. $intervalo = $date1->diff($date2);
  19.  
  20.  
  21. $salida = $intervalo->format('%R%a');
  22.  
  23. return $salida;
  24.  
  25. }
  26.  
  27.  
  28. if(fecha($fecha, $actual) >= "+1"){
  29.  
  30. echo "La fecha ".$fecha." es menor que ".$actual;
  31.  
  32. }else{
  33.  
  34. echo "La fecha ".$fecha." es mayor que ".$actual;
  35.  
  36. }
Esta bien pero al final lo hare como puse que es lo mismo solo que comparo diretametne los dos objetos Date con un simplle condicional ya que lo permite gracias.
  #6 (permalink)  
Antiguo 07/03/2016, 05:39
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: convertir cadena a fecha

podria ser asi tambien, ya que con la funcion no tienes que escribir a cada rato si no que solo envias los datos y esta realiza los calculos:

Código PHP:
Ver original
  1. $fecha="20012000";
  2. $actual = date("d-m-Y");
  3.  
  4.  
  5. function fecha($X, $Y){
  6.  
  7. //descomponemos la cadena
  8. $A = substr($X, 0, -6);
  9. $B = substr($X, 2, -4);
  10. $C = substr($X, 4);
  11.  
  12. //armamos la fecha
  13. $fecha = $A."-".$B."-".$C;
  14.  
  15. //le sumamos un día a esta fecha
  16. $fechaNueva = strtotime('+1 day', strtotime($fecha));
  17. $fechaNueva = date('d-m-Y', $fechaNueva);
  18.  
  19. //verificamos la diferencia entre la fecha nueva y la actual
  20. $date1 = new DateTime($fechaNueva);
  21. $date2 = new DateTime($Y);
  22.  
  23. $intervalo = $date1->diff($date2);
  24.  
  25.  
  26. $salida = $intervalo->format('%R%a');
  27.  
  28. //sacamos los datos para su comparación
  29. return $fechaNueva;
  30.  
  31. }
  32.  
  33. //comparamos la cadena con la fecha actual
  34. if(fecha($fecha, $actual) >= "+1"){
  35.  
  36. echo "Es fecha Pasada";
  37.  
  38. }else{
  39.  
  40. echo "La fecha está proxima";
  41.  
  42. }

Cita:
Esta bien pero al final lo hare como puse que es lo mismo solo que comparo diretametne los dos objetos Date con un simplle condicional ya que lo permite gracias.
no había leído eso, no hay problema
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 07/03/2016, 05:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: convertir cadena a fecha

Lo puedes hacer en cuatro líneas, si quieres sumar un día:
Código PHP:
$tz = new DateTimeZone('UTC');
$fecha DateTime::createFromFormat('dmY|''20012016'$tz ); 
date_add($fechadate_interval_create_from_date_string('1 days'));
echo 
date_format($fecha'd-m-Y'); 
Resultado:
Cita:
2016-01-21
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/03/2016, 05:42
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: convertir cadena a fecha

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo puedes hacer en cuatro líneas, si quieres sumar un día:
Código PHP:
$tz = new DateTimeZone('UTC');
$fecha DateTime::createFromFormat('dmY|''20012016'$tz ); 
date_add($fechadate_interval_create_from_date_string('1 days'));
echo 
date_format($fecha'd-m-Y'); 
Resultado:
Excelente mucho mas corto que el propuesto por mi
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 07/03/2016, 05:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: convertir cadena a fecha

Una prueba sumando un dia mas que lo necesario para el fin de mes:
Código PHP:
$periodo 12;
$fecha DateTime::createFromFormat('dmY|''20012016', new DateTimeZone('UTC') ); 
date_add($fechadate_interval_create_from_date_string($periodo.' days'));
echo 
date_format($fecha'd-m-Y'); 
Eso debería darte el 01/02/2016
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 07/03/2016, 05:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: convertir cadena a fecha

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo puedes hacer en cuatro líneas, si quieres sumar un día:
Código PHP:
$tz = new DateTimeZone('UTC');
$fecha DateTime::createFromFormat('dmY|''20012016'$tz ); 
date_add($fechadate_interval_create_from_date_string('1 days'));
echo 
date_format($fecha'd-m-Y'); 
Resultado:
Lo hice mas o menos asi excepto use $fecha->add(new DateInterval('P1D'));

lo deje asi sobretodo por la manera tan sencilla que tiene de comparar las fechas.
Código PHP:
Ver original
  1. $fecha1=$fecha->format('d-m-Y');
  2.  $fecha1=$fecha2->format('d-m-Y');
  3. if( $fecha1>$fecha2){
  4.    //codigo
  5. }

gracias a los dos por la ayuda saludos.

Etiquetas: cadena, fecha, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:31.