Foros del Web » Programando para Internet » PHP »

Determinar Fecha de Comienzo

Estas en el tema de Determinar Fecha de Comienzo en el foro de PHP en Foros del Web. Si quiero determinar por ejemplo cuando puede comenzar un sorteo , podemos hacer o utilizar la función date("dmYHis") , pero claro tan pronto pase de ...
  #1 (permalink)  
Antiguo 31/10/2011, 05:36
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Determinar Fecha de Comienzo

Si quiero determinar por ejemplo cuando puede comenzar un sorteo , podemos hacer o utilizar la función date("dmYHis") , pero claro tan pronto pase de esa fecha ya la cosa es más complicada de determinar o si es anterior , os pongo el caso de lo qeu no me sale y he intentado

Código PHP:
<?
$fecha_1
=mktime(12,31,38,31,10,2011);
$fecha_2=mktime(13,30,45,31,10,2011);



if(
$fecha_1<$fecha_2)
{
print 
"Sorteo Comenzado";
}
else
{
print 
"Sorteo por Comenzar";
}


?>

Estoy intentando trabajar con mktime para verificar el tiempo en segundos pero no me sale , he tratado utilizar time() para que se ajuste según el tiempo actual pero tampoco va , lo que tendría que hacer es determinarse si la fecha actual es la que debe utilizarse para el comienzo y qeu detecte la final para pararse


Muchas gracias por vuestra ayuda por adelantado , saludos a todos
  #2 (permalink)  
Antiguo 31/10/2011, 06:32
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Determinar Fecha de Comienzo

Prueba algo así

Código PHP:

$fecha_inicio 
mktime(0,0,0,11,5,2011); //05/11/2011 00:00:00
$fecha_fin     =  mktime(23,59,59,11,15,2011); //15/11/2011 23:59:59
$actual time();

if( 
$fecha_inicio <= $actual && $fecha_fin >= $actual) {
  
//Concurso en marcha
}
else {
  
//Concurso detenido

Algo así debería servirte :)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 31/10/2011, 07:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Respuesta: Determinar Fecha de Comienzo

Hola , gracias Eleazan el problema es cuando pongo por ejemplo una fecha con unas horas especificas de comienzo por ejemplo 18:22:34 , etc como en este ejemplo aplicando el código que me mencionas :

Código PHP:

<?php

$fecha_1
=mktime(14,17,38,31,10,2011);
$fecha_2=mktime(14,30,45,31,10,2011);


$actual time();

if( 
$fecha_1 <= $actual && $fecha_2 >= $actual
{
print 
"Sorteo Comenzando";
}
else
{
print 
"Sorteo por Comenzar";
}

?>

Cuando se acerca la hora 14:17:38 , pues pone Sorteo por Comenzar pero cuando supera los 17 minutos sigue poniendo lo mismo no detecta que ya se ha superado la hora de inicio y debería comenzar , a ver si me comentas algo , y muchas gracias , saludos
  #4 (permalink)  
Antiguo 31/10/2011, 07:31
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Determinar Fecha de Comienzo

Prueba esto:

Código PHP:

$fecha_1
=mktime(14,17,38,31,10,2011); 

$f date('d-m-Y h:i:s'$fecha_1);
echo 
'Fecha: '.$f
Así sabrás que fecha estás poniendo! :)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 31/10/2011, 07:42
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 2 meses
Puntos: 56
Respuesta: Determinar Fecha de Comienzo

recuerda que la fecha y hora la toma del servidor, no del equipo del usuario, por lo que deberías hacer uso de la función setlocale antes de hacer los cálculos de ese tipo.
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #6 (permalink)  
Antiguo 31/10/2011, 07:54
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Respuesta: Determinar Fecha de Comienzo

Ante todo gracias a los dos

Estoy haciendo unas pruebas para ver el funcionamiento pero observo varias cosas cuando pruebo para verificar el horario con la duncion de date , y pasando el tiempo estilo unix al formato normal , veo qeu si pongo las 23 horas lo interpreta como las 11 sin formato 24 horas ni nada , no se si eso puede influir o no

En cuanto al tema del horario del server , estoy corriendo en local osea que me detecta el horario actual que tengo

El tema es que dada la hora que es actualmente , por ejemplo las 14:50 , si el concurso comienza a las 14:52 y termina a las 15:33 pues que detecte al cargar la página simplemente en ese rango de tiempo pues lo siguiente :

Si no llegan a ser las 14:52 pone concurso por empezar , si llega , pone concurso empezado y si pasan de las horas marcadas para finalizar pone concurso terminado


El caso es qeu debe generarse algún tipo de problema puesto qeu al poner time() como referencia una de las fechas a pesar de estar correcta siempre sale con mayor valor al hacer mktime y no se puede corroborar el intervalo


A ver que me podeís decir , muchas gracias a ambos , saludos
  #7 (permalink)  
Antiguo 31/10/2011, 08:05
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 2 meses
Puntos: 56
Respuesta: Determinar Fecha de Comienzo

aún corriendo en modo local la hora la toma del server apache, confirma usando al función
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #8 (permalink)  
Antiguo 31/10/2011, 08:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Determinar Fecha de Comienzo

Pues he verificado cada horay también en modo servidor ya no en local , el tiempo actual digamos que es el que va a determinar y discernir si el concurso ha comenzado o no es decir el servidor me marca la hora en este caso española , si la hora actual española son las 14:30 por ejemplo y el concurso empieza a las 14:32 y termina a las 15:00 , pues en función de esa hora del server determinar si ha empezado , si está corriendo o ha concluido , según la fecha y hora dada pero he probado con diferentes funciones y no va , si fuese unicamente por fecha pues sería mas sencillo al dar un valor negativo ya está , el problema se plantea con los horarios para que se cumpla según la hora de comienzo y finalizacion , de esta forma si ha terminado la hora pues el script simplemente al cargar la página dirá que ya no es apto el acceso al concurso actual


Si podeís sugerir algún código o asi a ver si lo voy complementando y se consigue el resultado , muchas gracias por ayudarme , saludos
  #9 (permalink)  
Antiguo 31/10/2011, 09:03
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Respuesta: Determinar Fecha de Comienzo

Bueno he realizado esto y parece que así funciona , no se que os parecerá pero he verificado varias veces y parece que va bien no obstante si me daís alguna sugerencia pues perfecto a fin de modificarlo más :

Código PHP:

<?

$fecha_inicio
="15:32:24 10-31-2011";
$fecha_termino="15:34:24 10-31-2011";

$fecha_tag=explode(" ",$fecha_inicio);

$f_ini_1=explode(":",$fecha_tag[0]);
$f_ini_2=explode("-",$fecha_tag[1]);

$fecha_ini_horas_end="".$f_ini_1[0]."".$f_ini_1[1]."".$f_ini_1[2]."";
$fecha_ini_dias_end="".$f_ini_2[0]."".$f_ini_2[1]."".$f_ini_2[2]."";


$fecha_tag_2=explode(" ",$fecha_termino);

$f_end_1=explode(":",$fecha_tag_2[0]);
$f_end_2=explode("-",$fecha_tag_2[1]);

$fecha_end_horas_end="".$f_end_1[0]."".$f_end_1[1]."".$f_end_1[2]."";
$fecha_end_dias_end="".$f_end_2[0]."".$f_end_2[1]."".$f_end_2[2]."";



if(
$fecha_ini_horas_end<=date("His") && $fecha_ini_dias_end<=date("mdY") && $fecha_end_horas_end>=date("His") && $fecha_end_dias_end>=date("mdY"))
{


print 
"Sorteo Comenzado";



}
else
{

if(
$fecha_end_horas_end<=date("His") && $fecha_end_dias_end<=date("mdY"))
{
print 
"Sorteo Terminado";
}
else
{
print 
"Sorteo No Comenzado";
}


}





?>
  #10 (permalink)  
Antiguo 31/10/2011, 09:04
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Determinar Fecha de Comienzo

fr1974 lo siento, no leí bien lo q habías puesto antes xD

En lo q pusiste de
Código PHP:

$fecha_1
=mktime(14,17,38,31,10,2011);
$fecha_2=mktime(14,30,45,31,10,2011);


$actual time();

if( 
$fecha_1 <= $actual && $fecha_2 >= $actual
{
print 
"Sorteo Comenzando";
}
else
{
print 
"Sorteo por Comenzar";

El fallo está en estas dos líneas:
Código PHP:
$fecha_1=mktime(14,17,38,31,10,2011);
$fecha_2=mktime(14,30,45,31,10,2011); 
Básicamente, es el orden de los argumentos. El 31 (día) y el 10 (mes) deberías alternarlos, y ponerlo así:
Código PHP:
$fecha_1=mktime(14,17,38,10,31,2011);
$fecha_2=mktime(14,30,45,10,31,2011); 

Y el "problema" que te da con am o pm (q no te sale en 24 horas) ha sido un fallo mío en el date... la 'h' es en 12 horas, la H en 24.. asiq deberías cambiarlo por
Código PHP:
$f date('d-m-Y H:i:s'$fecha_1); 
Un saludo!
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 31/10/2011, 10:23
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Determinar Fecha de Comienzo

Yo hice mi chapucilla pero voy a testear esto ahora mismo y te comento ,muchas gracias Eleazan por tu ayuda :) , Saludos !!!
  #12 (permalink)  
Antiguo 31/10/2011, 10:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Respuesta: Determinar Fecha de Comienzo

Hola Eleazan , hice como me dijiste pero sigue fallando para la obtención de la fecha , cuando tenía que empezar pues sigue dando que no ó, algo se escapa ..... no se



Aquí los cambios :

Código PHP:
<?php

/// Més al principio y luego el día en alterno como me dijiste 

$fecha_1=mktime(16,17,38,10,31,2011);
$fecha_2=mktime(17,30,45,10,31,2011); 


$actual time();

if( 
$fecha_1 <= $actual && $fecha_2 >= $actual
{
print 
"Sorteo Comenzando";
}
else
{
print 
"Sorteo por Comenzar";
}

?>
  #13 (permalink)  
Antiguo 31/10/2011, 10:37
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Determinar Fecha de Comienzo

Lo he testeado y ya va perfectamente , un saludo y gracias :) , cualquier cosa te comento parece que todo va bien me comí una coma por el medio .....
  #14 (permalink)  
Antiguo 31/10/2011, 10:42
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Determinar Fecha de Comienzo

Prueba así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $fecha_1 = mktime(01, 00, 00, 10, 31, 2011);
  4. $fecha_2 = mktime(23, 59, 59, 10, 31, 2011);
  5.  
  6. $actual = time();
  7.  
  8. if ($actual >= $fecha_1 && $actual <= $fecha_2) {
  9.     print "Sorteo Comenzando";
  10. } else {
  11.     print "Sorteo por Comenzar";
  12. }

A las 23:59:59 va a dar Sorteo por Comenzar
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #15 (permalink)  
Antiguo 31/10/2011, 11:48
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 2 meses
Puntos: 56
Respuesta: Determinar Fecha de Comienzo

esta también puede servir:
Código PHP:
$tiempo_inicio '2011-10-31 17:00:00';
$tiempo_fin '2011-10-31 19:00:00';
$tiempo_actual date('Y-m-d H:i:s');

$inicio strtotime($tiempo_inicio);
$fin strtotime($tiempo_fin);
$ahora strtotime($tiempo_actual);

if(
$ahora $inicio 
    echo 
"<br/>El concurso no inicia";
if (
$inicio<=$ahora && $ahora <=$fin)
    echo 
"<br/>El concurso ha iniciado";
if(
$ahora $fin)    
    echo 
"<br/>El concurso termin&oacute;"
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #16 (permalink)  
Antiguo 01/11/2011, 06:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Respuesta: Determinar Fecha de Comienzo

Muy bueno este último , la verdad es alucinante como salen ideas entre todos , muchas gracias por la colaboración , Saludos

Etiquetas: comienzo, determinar, fecha
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 06:20.