Foros del Web » Programando para Internet » PHP »

Comparaciones de Fechas

Estas en el tema de Comparaciones de Fechas en el foro de PHP en Foros del Web. en una tabla ENQ_E hay guardados 2 campos ffinal y finicial. son 2 datetimes. paraintroducirlos el usuario mete el dia, mes, año hora y minuto, ...
  #1 (permalink)  
Antiguo 25/04/2005, 08:00
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
Pregunta Comparaciones de Fechas

en una tabla ENQ_E hay guardados 2 campos ffinal y finicial. son 2 datetimes.
paraintroducirlos el usuario mete el dia, mes, año hora y minuto, y yo lo concateno de esta forma: "dd-mm-yyyy hh:mm"

mediante el query que veis aqui abajo obtengo estos datetimes, y los comparo con la fecha actual...

El caso es que siempre me dice: "fecha MaXIMA sobrepasada, No se puede hacer"
cuando visualizo las diferentes fechas con los "echo" el explorador lo muestra bien . Muestra esto:
Fecha:25-4-2005 15:57:26
Fecha Inicio:1-1-2005 0:00
Fecha Final:12-6-2005 23:45

No se por que no me comparabien las fechas.. alguien me lo puede explicar o decirme como hacerlo???

Código PHP:
<?php
$dades
=mssql_query("select * from ENQ_E WHERE IdEn=$2",$servidor);
echo 
'<br>'
while(
$row mssql_fetch_array($dades)) { 
   
   
$finici=$row["Inici"];   //guardamos fecha inicio en variable
   
$ffinal=$row["Final"];   //guardamos fecha final en variable
   
$npreg=$row["NumPreg"];  //guardamos el numero de preguntas en variable
}
  echo 
'Fecha:'$fecha'<br>'
  echo 
'Fecha Inicio:'$finici'<br>'
  echo 
'Fecha Final:'$ffinal'<br>'

if (
$finici $fecha) {
    
//miramos si la fecha esta entre inicio y final
    
echo ' AUN NO SE PUEDE HACER LA ENCUESTA';
    }
    elseif (
$fecha $ffinal) {
        echo 
'fecha MaXIMA sobrepasada, No se puede hacer'
        }
    else { 
        echo 
' YA SE PUEDE HACER';
        }
?>
__________________
Share our Knowledge!
Adura Vita!
  #2 (permalink)  
Antiguo 25/04/2005, 08:04
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Usa mktime para compararlas.

http://ar2.php.net/manual/es/function.mktime.php
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 25/04/2005, 08:19
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
Pero para usar mktime necesito separar los dias mes año hora y minuto

int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst] )


con explode no puedo, porque hay 3 separadores diferentes: "-", " " y ":"

Como puedo separar los minutos, horas, dia, mes y año, para luego usar el MKTIME?
__________________
Share our Knowledge!
Adura Vita!
  #4 (permalink)  
Antiguo 25/04/2005, 08:24
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
strtotime:
http://ar2.php.net/manual/pt_BR/function.strtotime.php
;)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 25/04/2005, 08:44
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
Lo he probado pero me sigue dando mal.. esto es lo que me saca el explorer:
-------------------------------------------------------
Fecha:25-4-2005 16:47
Fecha Inicio:1-1-2005 0:00
Fecha Final:12-6-2005 23:45
Fecha actual buena:1916664420
Fecha inicial buena:1151445600
Fecha final buena:1511736300

fecha MaXIMA sobrepasada, No se puede hacer
-------------------------------------------------------
No se por que le da un valor mas grande a la fecha actual que a la maxima.

El codigo cambiado es este:
Código PHP:
<?php
$dades
=mssql_query("select * from ENQ_Enquestes WHERE IdEnquesta=$2",$servidor);
echo 
'<br>'
while(
$row mssql_fetch_array($dades)) { 
   
   
$finici=$row["Inici"];   //guardamos fecha inicio en variable
   
$ffinal=$row["Final"];   //guardamos fecha final en variable
   
$npreg=$row["NumPreg"];  //guardamos el numero de preguntas en variable
}
  echo 
'Fecha:'$fecha'<br>'
  echo 
'Fecha Inicio:'$finici'<br>'
  echo 
'Fecha Final:'$ffinal'<br>'

$fbuena=strtotime (  $fecha );
$finicialbuena=strtotime (  $finici );
$ffinalbuena=strtotime (  $ffinal );
echo 
'Fecha actual buena:'$fbuena;
echo 
'<br>Fecha inicial buena:'$finicialbuena;
echo 
'<br>Fecha final buena:'$ffinalbuena,'<br><br><br>';

if (
$finicialbuena$fbuena) {
    
//miramos si la fecha esta entre inicio y final
    
echo ' AUN NO SE PUEDE HACER LA ENCUESTA';
    }
    elseif (
$fbuena$ffinalbuena) {
        echo 
'fecha MaXIMA sobrepasada, No se puede hacer'
        }
    else { 
        echo 
' YA SE PUEDE HACER';
        }
?>
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 25/04/2005 a las 08:57
  #6 (permalink)  
Antiguo 25/04/2005, 08:55
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Para empezar elseif ($fbuena> $ffinal) deberia ser elseif ($fbuena> $ffinalbuena) .
Intentá con eso.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 25/04/2005, 09:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
No se si el formato de la fecha que le pasas al strtotime no debe ser "yyyy-mm-dd", fijate en eso.
Saludos
  #8 (permalink)  
Antiguo 25/04/2005, 09:18
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
otia.. lo habia copiado mal aki.. ^^"

peor no, :( el problema es que el valor que le da a la final, es mas alto que la actual.. por lo tanto.. siempre estara superada..

lo del formato, yo le pasaba formato dd-mm-yyyy hh:mm

peor tpko puedo cambiarlo a yyyy-mm-dd hh:mm, o si? si se puede dime como por favor.
__________________
Share our Knowledge!
Adura Vita!
  #9 (permalink)  
Antiguo 25/04/2005, 09:26
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Sino podes pedirle los datos al query. Para eso tenes las funciones DAY, MONTH, YEAR y si queres tambien UNIX_TIMESTAMP.
Mas info en mysql.com
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #10 (permalink)  
Antiguo 25/04/2005, 09:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
o puedes jugar con los substring o puedes hacer un explode, esto hace tu codigo mas complejo asi que te recomiendo hacer una funcion que te devuelve la fecha con formato Y-m-d la que puede contener el codigo algo asi:
Código PHP:
         
function invertir_fecha($fecha)
         
$auxF=explode("-",$fecha);//formato original "dd-mm-yyyy hh:mm"
         
$dia=$auxF[0];
         
$mes=$auxF[1];
         
$auxAnio=explode(" ",$auxF[2]);//el ultimo tiene año y hora
         
$año=$auxAnio[0];
         
$auxHora=explode(":",$auxAnio[1]);        
         
$hora=$auxHora[0];
         
$minutos=$auxHora[1];
         
$fechaNueva $anio."-".$mes."-".$dia." ".$hora.":".$minutos;
         return 
$fechaNUeva;
end 
Bueno algo asi. No es lo mejor, pero es lo primero que arme con algo que encontre echo.
Saludos
  #11 (permalink)  
Antiguo 25/04/2005, 10:22
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
La paso a lo que él necesita, y a su vez le corrijo unas cosillas minimas para que no le tire error:

Código PHP:

function convertir($fecha){
         
$auxF=explode("-",$fecha);//formato original "dd-mm-yyyy hh:mm" 
         
$dia=$auxF[0]; 
         
$mes=$auxF[1]; 
         
$auxAnio=explode(" ",$auxF[2]);//el ultimo tiene año y hora 
         
$anio=$auxAnio[0]; 
         
$auxHora=explode(":",$auxAnio[1]);         
         
$hora=$auxHora[0]; 
         
$minutos=$auxHora[1]; 
         
#$fechaNueva = $anio."-".$mes."-".$dia." ".$hora.":".$minutos; 
         
$fechaNueva mktime(0,0,0,$mes,$dia,$anio);
         return 
$fechaNueva
}
#Para mostrar el mkime
echo convertir("25-4-2005 15:57:26"); 
#Para mostrar la fecha:
echo date("d-m-Y",convertir("25-4-2005 15:57:26")); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #12 (permalink)  
Antiguo 26/04/2005, 03:14
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
da unos errores de valor negativo y offset indefinido dependiendo de la fecha.. :S

he provado la funcion.. pero hay un problemilla aun.. :S

he aplicado la funcion asi:
Código PHP:
  echo 'Fecha:'$fecha'<br>'
  echo 
'Fecha Inicio:'$finici'<br>'
  echo 
'Fecha Final:'$ffinal'<br>'

convertir($fecha);
echo 
'fecha convertida'$fecha;
convertir($finici);
echo 
'fecha inici convertida'$finici;
convertir($ffinal);
echo 
'fecha final convertida'$ffinal
pero al probarlo me da errores a veces...
depende de la fecha inicial o final.. por ejemplo:
Código:
Fecha: 25-4-2005 23:24
Fecha Inicio: 1-1-2005 0:00
Fecha Final: 12-6-2005 23:45
fecha convertida 25-4-2005 23:24

Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 30
fecha inici convertida 1-1-2005 0:00
fecha final convertida 12-6-2005 23:45
o provando con otras fechas:
Código:
Fecha: 25-4-2005 23:25
Fecha Inicio: 1-1-1900 0:00
Fecha Final: 1-1-1900 0:00
fecha convertida 25-4-2005 23:25

Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 30

Warning: mktime(): Windows does not support negative values for this function in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 32
fecha inici convertida 1-1-1900 0:00

Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 30

Warning: mktime(): Windows does not support negative values for this function in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 32
fecha final convertida 1-1-1900 0:00
o finalmente:
Código:
Fecha: 25-4-2005 23:26
Fecha Inicio: 11-11-2111 22:22
Fecha Final: 11-11-2255 22:22
fecha convertida 25-4-2005 23:26

Warning: mktime(): Windows does not support negative values for this function in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 32
fecha inici convertida 11-11-2111 22:22

Warning: mktime(): Windows does not support negative values for this function in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 32
fecha final convertida 11-11-2255 22:22
__________________
Share our Knowledge!
Adura Vita!
  #13 (permalink)  
Antiguo 26/04/2005, 06:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 7 meses
Puntos: 102
Cita:
Iniciado por Pazosele
en una tabla ENQ_E hay guardados 2 campos ffinal y finicial. son 2 datetimes.
paraintroducirlos el usuario mete el dia, mes, año hora y minuto, y yo lo concateno de esta forma: "dd-mm-yyyy hh:mm"
¿En serio te permite guardar ese formato??? un campo DATETIME debe llevar un formato de YYYY-MM-DD hh:mm:ss .. y dichas comparaciones creo podrías hacerlas con puro SQL.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 26/04/2005, 07:26
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
Sonrisa Okis!

Con ese formato parece que la cosa ya tira...

me da error de ofset a veces..
Código:
Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 30
no se por que, peor bueno es un warning i no me influye en la aplicacion.

el error:
Código:
Warning: mktime(): Windows does not support negative values for this function in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 32

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 52
era porque el año era mayor del 2037, no sabia que eso no se podia poner con el date:P

MUCHISIMAS GRACIAS A TODOS!
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 26/04/2005 a las 07:32 Razón: + info
  #15 (permalink)  
Antiguo 26/04/2005, 07:52
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
No es en date, es en mktime, el cual tampoco soporta fecha menores al 1 del 1 de 1970...o sea, te sirve para fechas actuales por asi decirlo, pero para cumpleaños y esas cosas no.

Si queres servir los datos de sql, tenes un sin fin de funciones que te pueden servir, como dayofmonth(), month(), year(), datediff(), date_add(), date_sub(), day(), unix_timestamp(), y mass....

Mysql.com
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #16 (permalink)  
Antiguo 26/04/2005, 07:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por nicolaspar
No es en date, es en mktime, el cual tampoco soporta fecha menores al 1 del 1 de 1970...o sea, te sirve para fechas actuales por asi decirlo, pero para cumpleaños y esas cosas no.

Si queres servir los datos de sql, tenes un sin fin de funciones que te pueden servir, como dayofmonth(), month(), year(), datediff(), date_add(), date_sub(), day(), unix_timestamp(), y mass....

Mysql.com
Invité a nuestro amigo a que pregunte también en el foro de "Base de datos" por una solución vía SQL a su problema .. así que evalue cual le viene mejor y cual en su caso partícular sea más óptima (por si ven un mensaje similar en dicho foro).

Un saludo,
  #17 (permalink)  
Antiguo 26/04/2005, 08:00
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Up!



PD: no se puede poner un msg menor a 10 caracteres? (esta pregunta fue para llenar el lugar, no es necesario que sea respondida )

__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #18 (permalink)  
Antiguo 26/04/2005, 09:35
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
pero... aun queda un notice .. :S

bueno, la cosa funciona bien, me compara bien y tal, el unico problema es este WARNING:

Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\pruebadefechas.php on line 30
Sabeis a que se debe?
Posteare el foro en Bases de datos paraver si alli saben algo del tema :D

Código PHP:
function convertir($fecha){ 
         
$auxF=explode("-",$fecha);//formato original "dd-mm-yyyy hh:mm" 
         
$dia=$auxF[0]; 
         
$mes=$auxF[1]; 
         
$auxAnio=explode(" ",$auxF[2]);//el ultimo tiene año y hora 
         
$anio=$auxAnio[0]; 
         
$auxHora=explode(":",$auxAnio[1]);          
         
$hora=$auxHora[0]; 
         
$minutos=$auxHora[1];     //EL ERROR ES EN ESTA LINEA
         
$fechaNueva mktime($hora,$minutos,0,$mes,$dia,$anio); 
         return 
$fechaNueva

?> 
da el error en esa linea, cuando llamas a la funcion asi:
$fechafrm=date("YmdHis",convertir($fecha));

me lo da aleatoriamente (a veces si a veces no), a veces en un campo y aveces en otro.. alguien sabe a que se debe?
__________________
Share our Knowledge!
Adura Vita!
  #19 (permalink)  
Antiguo 26/04/2005, 10:09
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Posteá cuál es la línea en tu código que tira error, y cual es la fecha en particular con la que tira error.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #20 (permalink)  
Antiguo 26/04/2005, 10:24
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
esque es curiosisimo.. creo que me da el error cuando las horas estan puestas kon 1 digito en lugarde 2.. quiero decir, si son las 1:07 da error, si son las 12:26 no..
no entiendo porque.. porque me lo convierte bien pese a dar error..
esto es lo que saca el explorer:
Código PHP:
Fecha actual26-04-2005 18:24 

 
(del 12-12-2006 1:02 al 12-5-2007 12:12//fechas minima i maxima sin convertir
Numero de preguntes:4

fecha convertida y con formato
20050426182400
Notice
Undefined offset1 in c:inetpubwwwrootresponderrenquesta.php on line 18

fecha inici convertida y con formato
20061212000000
fecha 
final convertida y con formato20070512121200 
el codigo que falla es este:
Código PHP:
function convertir($fecha){ 
         
$auxF=explode("-",$fecha);//formato original "dd-mm-yyyy hh:mm" 
         
$dia=$auxF[0]; 
         
$mes=$auxF[1]; 
         
$auxAnio=explode(" ",$auxF[2]);//el ultimo tiene año y hora 
         
$anio=$auxAnio[0]; 
         
$auxHora=explode(":",$auxAnio[1]);          
         
$hora=$auxHora[0]; 
         
$minutos=$auxHora[1]; ////////esta es la linea 18(la que falla)///////
         
$fechaNueva mktime($hora,$minutos,0,$mes,$dia,$anio); 
         return 
$fechaNueva

?> 
He provado añadiendo segundos, peor falla exactamente igual. No los pongo pk no los necesito.

la llamada ala funcion la hago asi:
Código PHP:
$fechafrm=date("YmdHis",convertir($fecha));
echo 
'<br>fecha convertida y con formato: '$fechafrm;
$fechainifrm=date("YmdHis",convertir($finici));
echo 
'<br>fecha inici convertida y con formato: '$fechainifrm;
$fechafinfrm=date("YmdHis",convertir($ffinal));
echo 
'<br>fecha final convertida y con formato: '$fechafinfrm
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 26/04/2005 a las 10:28 Razón: mas info
  #21 (permalink)  
Antiguo 26/04/2005, 11:11
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
Cita:
Iniciado por nicolaspar
Posteá cuál es la línea en tu código que tira error, y cual es la fecha en particular con la que tira error.
Aqui te pongo un poco mejor lo que pasa.
Creo que es cuando la Hora inicio o final, tiene un digito en lugarde 2, es decir si la hora es la 1:23 DA ERROR, si son las 11:23, no da error..
es curioso, peor es asi..:S
lo mas curioso es que la convierte bien a pesarde dar el error...
Código PHP:
function convertir($fecha){ 
         
$auxF=explode("-",$fecha);//formato original "dd-mm-yyyy hh:mm" 
         
$dia=$auxF[0]; 
         
$mes=$auxF[1]; 
         
$auxAnio=explode(" ",$auxF[2]);//el ultimo tiene año y hora 
         
$anio=$auxAnio[0]; 
         
$auxHora=explode(":",$auxAnio[1]);          
         
$hora=$auxHora[0]; 
         
$minutos=$auxHora[1]; /////ESTA ES LA LINEA 18!!! la que da el error/////
         
$fechaNueva mktime($hora,$minutos,0,$mes,$dia,$anio); 
         return 
$fechaNueva

He probado de poner los segundos, por si era eso, peor falla igual..

Luego llamo a la funcion para cada campo:
Código PHP:
$fechafrm=date("YmdHis",convertir($fecha));
echo 
'<br>fecha convertida y con formato: '$fechafrm;
$fechainifrm=date("YmdHis",convertir($finici));
echo 
'<br>fecha inici convertida y con formato: '$fechainifrm;
$fechafinfrm=date("YmdHis",convertir($ffinal));
echo 
'<br>fecha final convertida y con formato: '$fechafinfrm
el caso es que me da este error:
Código:
Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\renquesta.php on line 18
me lo da aleatoriamente dependiendo de la fecha que sea, a veces lo da a veces no...y creo que es por eso que te e dicho, de si esta la hora con un digito..
lo que sale por el explorer en un caso dado es esto:
Código:
Fecha actual: 26-04-2005 03:16 

Fecha inicio y final sin convertir (del 1-1-2005 0:00 al 12-6-2005 23:45)
Numero de preguntes:2

fecha convertida y con formato: 20050426031600
Notice: Undefined offset: 1 in c:\inetpub\wwwroot\responder\renquesta.php on line 18

fecha inici convertida y con formato: 20050101000000
fecha final convertida y con formato: 20050612234500
como te digo la comparacionla hace bien, pero ese error me sale en pantalla..
en este caso el error lo da en el campo fecha inicio, que si te fijas la hora es 0 (1 digito) he provado varios ejemplos i falla en eso..
Despues del fallo en la hora, ya no pasa bien los minutos, es decir si la fechainici fuera las 22-11-2005 2:34 devolveria esto: 20051122000000
:( pero no se porque.. :S:S:S:S
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 26/04/2005 a las 11:21
  #22 (permalink)  
Antiguo 26/04/2005, 11:20
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Vos me estas mostrando esto:
Código PHP:
$fechafrm=date("YmdHis",convertir($fecha)); 
echo 
'<br>fecha convertida y con formato: '$fechafrm
$fechainifrm=date("YmdHis",convertir($finici)); 
echo 
'<br>fecha inici convertida y con formato: '$fechainifrm
$fechafinfrm=date("YmdHis",convertir($ffinal)); 
echo 
'<br>fecha final convertida y con formato: '$fechafinfrm
Pero el error lo esta tirando la variable ffinal al parecer....Mira, yo he puesto esto:
Código PHP:
function convertir($fecha){ 
         
$auxF=explode("-",$fecha);//formato original "dd-mm-yyyy hh:mm" 
         
$dia=$auxF[0]; 
         
$mes=$auxF[1]; 
         
$auxAnio=explode(" ",$auxF[2]);//el ultimo tiene año y hora 
         
$anio=$auxAnio[0]; 
         
$auxHora=explode(":",$auxAnio[1]);           
         
$hora=$auxHora[0]; 
         
$minutos=$auxHora[1]; /////ESTA ES LA LINEA 18!!! la que da el error///// 
         
$fechaNueva mktime($hora,$minutos,0,$mes,$dia,$anio); 
         return 
$fechaNueva


echo 
date("d-m-Y",convertir("1-1-2005 0:00")); 
Y si no pongo algo inferior o superior a lo soportado con mktime no me tira error. Busca una fecha (Por ejemplo 1-1-2005 0:00) que tire error, y decime cual es esa fecha.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #23 (permalink)  
Antiguo 26/04/2005, 11:30
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Como ya se te dijo... opta por una solución desde el mismo sql.
Definitivamente te estás yendo por las ramas y complicándote más de lo debido por tratar de hacer el manejo de fechas desde PHP.

Saludos
  #24 (permalink)  
Antiguo 26/04/2005, 11:50
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
No te puedo dar una solución porque no conozco la sintaxis propia de SQL Server, pero te voy a poner un ejemplo de cómo se haría con MySql para que preguntes por algo equivalente en SQL Server.
Código PHP:
$sql "SELECT * 
        FROM ENQ_E WHERE IdEn = $2 
        AND Inici < NOW() 
        AND Final > NOW()"
;// Incluso se simplificaría con "BETWEEN (o no se puede?)"
$dades mysql_query($sql$servidor); 
echo 
'<br>';
if(
$row mysql_fetch_array($dades)){// Si hay un registro que cumpla...
    
echo "Ya se puede hacer";
    
//Y si quieres lees las variables necesarias de la BD
    
$npreg $row["NumPreg"];// etc, etc...
}else{
    echo 
"Está fuera de tiempo. No se puede realizar.";

En SqlServer podría ser algo como:
Código PHP:
$sql "SELECT * 
        FROM ENQ_E WHERE IdEn = $2 
        AND Inici < GetDate() 
        AND Final > GetDate()"
;

// O (No sé si se pueda) con BETWEEN:
$sql "SELECT * FROM ENQ_E 
        WHERE GetDate() BETWEEN Inici AND Final"

Es cuestión de que averigües la sintaxis correcta.
Lo que trato de decir es que ya no necesitas hacer uso del manejo desde PHP con mktime ni similares.

Saludos

Última edición por jpinedo; 27/04/2005 a las 09:24 Razón: había duplicado un "WHERE"
  #25 (permalink)  
Antiguo 26/04/2005, 12:00
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
jaja, pero ya que lo tengo xcasi acabao.. lo terminare de matizar asi..

Nicolaspar, no lo entiendo yo topko.. porque probando con la funcion sola con fechas de todo tipo, funciona..
sera problema del campo de la bdd kizas.. lo que no entiendo es que solo falle cuando la hora tiene un digito..
no lo entiendo, peor voy a ir probando, si eso ya os digo algo!
__________________
Share our Knowledge!
Adura Vita!
  #26 (permalink)  
Antiguo 27/04/2005, 06:48
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
no te habia leido el 2º post! xD

JPINEDO! no habia leido tu segundo post, estaria respondiendo laa vez que tu, jeje.. probare tb lo que dices, directamente en SQL, ya te contare que tal! XD
__________________
Share our Knowledge!
Adura Vita!
  #27 (permalink)  
Antiguo 27/04/2005, 07:23
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años
Puntos: 0
VALE!!!! lo he echo por sql , y parece que la cosa va bien :)
Muchisimas gracais a todos por las no pocas molestias que os he dado! jeejej!
SaLuDoS!!!
__________________
Share our Knowledge!
Adura Vita!
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:39.