Foros del Web » Programando para Internet » PHP »

cual fecha es mayor?

Estas en el tema de cual fecha es mayor? en el foro de PHP en Foros del Web. necesito calcular cual fecha es mayor... tengo esta funcion.. pero no me funciona... Código PHP: function  cualfechaesmayor ( $fecha1 ,  $fecha2 ){ // Formato dd/mm/YYYY H:i:s if( $fecha1  ...
  #1 (permalink)  
Antiguo 06/06/2008, 10:34
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Pregunta cual fecha es mayor?

necesito calcular cual fecha es mayor...

tengo esta funcion.. pero no me funciona...

Código PHP:

function cualfechaesmayor($fecha1$fecha2){
// Formato dd/mm/YYYY H:i:s
if($fecha1 $fecha2){
$result="1";
}
if(
$fecha1 $fecha2){
$result="2";
}
if(
$fecha1 $fecha2){
$result="0";
}

// devuelve  0 si son iguales, 1 si es mayor la fecha1 y 2 si es mayor la fecha2
return $result;

como puedo hacerlo? help!
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #2 (permalink)  
Antiguo 06/06/2008, 10:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: cual fecha es mayor?

necesitas construir las fechas a un formato de entero, y no string... como lo haces

puedes aliarte de mktime() ... así que, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/06/2008, 11:08
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: cual fecha es mayor?

mmmm... y como hago eso? si me pones el codigo voy a entender un mejor...
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #4 (permalink)  
Antiguo 06/06/2008, 11:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: cual fecha es mayor?

claro... aquí esta!

http://php.net/mktime (en la pagina de PHP hay muchos ejemplos)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/06/2008, 11:31
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: cual fecha es mayor?

aca esta el codigo que hice con el MKTIME:


Código PHP:

function cualesmayor($fecha1,$fecha2){
// Formato de entrada d/m/Y H:i:s

// separa hora y fecha
//1
$fecha1 explode(" ",$fecha1);
$fec1=$fecha1[0];
$hor1=$fecha1[1];
//2
$fecha2 explode(" ",$fecha2);
$fec2=$fecha2[0];
$hor2=$fecha2[1];

// separar fecha
//1
$fech1=explode("/",$fec1);
$dia1=intval($fech1[0]);
$mes1=intval($fech1[1]);
$ano1=intval($fech1[2]);
//2
$fech2=explode("/",$fec2);
$dia2=intval($fech2[0]);
$mes2=intval($fech2[1]);
$ano2=intval($fech2[2]);

// separar hora
//1
$hors1=explode(":",$hor2);
$hora1=intval($hors1[0]);
$minut1=intval($hors1[1]);
$segun1=intval($hors1[2]);
//2
$hors2=explode(":",$hor2);
$hora2=intval($hors2[0]);
$minut2=intval($hors2[1]);
$segun2=intval($hors2[2]);


// convertimos a timestamp
$fechatime1=mktime ($hora1,$minut1,$segun1,$mes1,$dia1,$ano1);
$fechatime2=mktime ($hora2,$minut2,$segun2,$mes2,$dia2,$ano2);

// comparamos cual es mayor, cual menor o si son iguales
if($fechatime1 $fechatime2){
$result="0";
}
if(
$fechatime1 $fechatime2){
$result="1";
}
if(
$fechatime1 $fechatime2){
$result="2";
}

// retornamos el resultado

return $result;


pero no me funciona, siempre me devuelve cero...

donde esta el error?
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #6 (permalink)  
Antiguo 06/06/2008, 11:33
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: cual fecha es mayor?

Otra posibilidad, es si ambas fechas son strings hacer algo como:

Código PHP:
function fechaMayor($fecha1$fecha2){
return 
strtotime($fecha1) > strtotime($fecha2);


strtotime\1 recibe un string fecha y retorna un numero entero equivalente a esa fecha. Si estas usando una de las últimas versiones de php, que admiten booleans, entonces esa función estará bien así. Sino, sin booleans la version sería:

Código PHP:
function fechaMayor($fecha1$fecha2){
return 
strtotime($fecha1) - strtotime($fecha2);


Si es mayor, el valor de retorno sera positivo, si son iguales sera 0 y si es menor retornará negativo.
Suerte!
__________________
Saludoss
Guille
  #7 (permalink)  
Antiguo 06/06/2008, 11:33
 
Fecha de Ingreso: junio-2008
Mensajes: 1
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: cual fecha es mayor?

Buenas, necesito una ayuda. Tengo un reporte que entregar (DataReport) y ya hice una sentencia en Sql y esoty filtrando la fecha muy bien y ahora necesito filtrar la fecha mas otro campo, osea, queiro que me refleje si el Contribuyente CANTV(ejemplo) ha pagado en el mes de mayo del 2008. entonces ya yengo filtrada la fecha y se lo muestro como filtro tambien el campo + la fecha.

Private Sub cmbconsulta_click()
Dim MiSQL As String
On Error GoTo Cancel
Cancel:
If Err.Number = 13 Then
Close
Exit Sub
End If
Dim respt
x = Date
If DtpDesde > x Then
MsgBox "La Fecha Inicial no Puede Ser Mayor a la Fecha Actual", vbExclamation, "Consultas"
Exit Sub
End If
If DtpHasta > x Then
MsgBox "La Fecha Final no Puede Ser Mayor a la Fecha Actual", vbExclamation, "Consultas"
Exit Sub
End If
MiSQL = "SELECT * FROM Certificación WHERE Emision_factura Between #" & Format(DtpDesde, "m/d/yyyy") & "# And #" & Format(DtpHasta + 1, "m/d/yyyy") & "# order by Nombre" Debug.Print MiSQL
If adoImpDia.State = adStateOpen Then adoImpDia.Close
Enlace adoImpDia, MiSQL
Set RptGeneral.DataSource = adoImpDia
RptGeneral.Title = "Reporte General del Sistema" & " Desde " & DtpDesde & " Hasta " & DtpHasta
RptGeneral.Caption = "Reporte General del Sistema"
RptGeneral.Show
End Sub
este es mi filtro actual pero quiero agregarle a la sentencia Sql la fecha mas el campo.
  #8 (permalink)  
Antiguo 06/06/2008, 11:37
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: cual fecha es mayor?

Cita:
Iniciado por maikel76 Ver Mensaje
Buenas, necesito una ayuda. Tengo un reporte que entregar (DataReport) y ya hice una sentencia en Sql y esoty filtrando la fecha muy bien y ahora necesito filtrar la fecha mas otro campo, osea, queiro que me refleje si el Contribuyente CANTV(ejemplo) ha pagado en el mes de mayo del 2008. entonces ya yengo filtrada la fecha y se lo muestro como filtro tambien el campo + la fecha.

Private Sub cmbconsulta_click()
Dim MiSQL As String
On Error GoTo Cancel
Cancel:
If Err.Number = 13 Then
Close
Exit Sub
End If
Dim respt
x = Date
If DtpDesde > x Then
MsgBox "La Fecha Inicial no Puede Ser Mayor a la Fecha Actual", vbExclamation, "Consultas"
Exit Sub
End If
If DtpHasta > x Then
MsgBox "La Fecha Final no Puede Ser Mayor a la Fecha Actual", vbExclamation, "Consultas"
Exit Sub
End If
MiSQL = "SELECT * FROM Certificación WHERE Emision_factura Between #" & Format(DtpDesde, "m/d/yyyy") & "# And #" & Format(DtpHasta + 1, "m/d/yyyy") & "# order by Nombre" Debug.Print MiSQL
If adoImpDia.State = adStateOpen Then adoImpDia.Close
Enlace adoImpDia, MiSQL
Set RptGeneral.DataSource = adoImpDia
RptGeneral.Title = "Reporte General del Sistema" & " Desde " & DtpDesde & " Hasta " & DtpHasta
RptGeneral.Caption = "Reporte General del Sistema"
RptGeneral.Show
End Sub
este es mi filtro actual pero quiero agregarle a la sentencia Sql la fecha mas el campo.
No se si esta bueno que uses threads de otro para hacer tus consultas, y menos cuando no tienen mucho que ver... Igual te respondo, cualquier cosa que lo muevan:

SELECT campos
FROM tabla1,tabla2,...,tablan
WHERE (condicion1) AND (condicion2) AND (condicion3) OR(condicion4)
ORDER BY campo

espero que te sirva :)
__________________
Saludoss
Guille
  #9 (permalink)  
Antiguo 06/06/2008, 11:52
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: cual fecha es mayor?

cambie la funcion con el strotime.. y sigue sin funcionar...

no entiendo por que me da igual el valor siempre... si las fechas son distintas...


Código PHP:

function cualesmayor($fecha1,$fecha2){
// Formato de entrada d/m/Y H:i:s

// separa hora y fecha
//1
$fecha1 explode(" ",$fecha1);
$fec1=$fecha1[0];
$hor1=$fecha1[1];
//2
$fecha2 explode(" ",$fecha2);
$fec2=$fecha2[0];
$hor2=$fecha2[1];

// separar fecha
//1
$fech1=explode("/",$fec1);
$dia1=$fech1[0];
$mes1=$fech1[1];
$ano1=$fech1[2];
//2
$fech2=explode("/",$fec2);
$dia2=$fech2[0];
$mes2=$fech2[1];
$ano2=$fech2[2];

// separar hora
//1
$hors1=explode(":",$hor1);
$hora1=$hors1[0];
$minut1=$hors1[1];
$segun1=$hors1[2];
//2
$hors2=explode(":",$hor2);
$hora2=$hors2[0];
$minut2=$hors2[1];
$segun2=$hors2[2];

/*
// convertimos a timestamp
$fechatime1=mktime ($hora1,$minut1,$segun1,$mes1,$dia1,$ano1);
$fechatime2=mktime ($hora2,$minut2,$segun2,$mes2,$dia2,$ano2);
*/


$fechamy1=$ano1."-".$mes1."-".$dia1." ".$hora1.":".$minut1.":".$segun1;
$fechamy2=$ano2."-".$mes2."-".$dia2." ".$hora2.":".$minut2.":".$segun2;
$fechatime1=strtotime($fechamy1);
$fechatime2=strtotime($fechamy2);

// comparamos cual es mayor, cual menor o si son iguales
if($fechatime1 $fechatime2){
$result="0";
}
if(
$fechatime1 $fechatime2){
$result="1";
}
if(
$fechatime1 $fechatime2){
$result="2";
}

// imprimimos el resultado
// devuelve  0 si son iguales, 1 si es mayor la fecha1 y 2 si es mayor la fecha2
//$result=$fechamy1."<br />".$fechamy2;
return $result;


asi le llamo:

Código PHP:
<?php $mayor=cualesmayor("02/04/2008 12:33:05","03/04/2008 12:33:06");
echo 
$mayor;
 
?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #10 (permalink)  
Antiguo 06/06/2008, 11:55
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: cual fecha es mayor?

bue.. al fin le encontre el error.. y era un error estupido...!

Error:
if($fechatime1 = $fechatime2){
$result="0";
}

Coreccion:
if($fechatime1 == $fechatime2){
$result="0";
}

me trague un '='
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
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 16:10.