Foros del Web » Programando para Internet » PHP »

Dias transcurridos desde el inicio del año

Estas en el tema de Dias transcurridos desde el inicio del año en el foro de PHP en Foros del Web. Hola no se mucho de Php pero necesito que al entrar en la página me coloque en una variable el valor de los días que ...
  #1 (permalink)  
Antiguo 11/04/2012, 16:44
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Dias transcurridos desde el inicio del año

Hola no se mucho de Php pero necesito que al entrar en la página me coloque en una variable el valor de los días que han transcurrido desde el comienzo del año por ejemplo (el 3 de Febrero es el día 34 de año y el 11 de abril es el día 102 en un año bisiesto), esto lo necesito porque el valor de esa variable debo utilizarla en otra parte de esa misma página y que no cambie hasta que cambie el día.

La verdad antes de llegar hasta aquí he estado mirando por ahi y lo unico que he encontrado es en javascript pero el problema es que en javascript la variable no se puede pasar ni ser utilizada por php ya que javascript se ejecuta en el cliente y Php en el servidor, supongo que se podra hacer en php pero no he encontrado la forma.

Me podeis ayudar y decirme como lo debo hacer.

Gracias.
  #2 (permalink)  
Antiguo 11/04/2012, 17:03
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Dias transcurridos desde el inicio del año

STFG Aqui tienen una breve explicación
  #3 (permalink)  
Antiguo 11/04/2012, 17:13
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Dias transcurridos desde el inicio del año

es tan simple como la diferencia del día actual con el primero del año:

el segundo actual:
time();

el primer segundo del primer día del año:
mktime(0,0,0,1,1,date('Y'));

Luego se restan y divides por 3600*24 y obtendrás la diferencia en días, tan simple como eso ;) Te recomiendo le apliques floor(), round() o ceil() a la división dependiendo de si quieres el resultado de acuerdo al día actual, pasado o futuro.

Saludos.
  #4 (permalink)  
Antiguo 12/04/2012, 02:12
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dias transcurridos desde el inicio del año

Gracias a los dos gjx2 y a unreal4u por vuestra ayuda.

Como ya os dije no se casi nada de PHP, pero con la esplicación que me dio unreal4u capte la base para poder hacerlo, aunque aproveche la esplicación que me aconsejo gjx2 porque podia probar el código inmediatamente, y así lo hice.

Ese código me vale porque hace lo que necesito, pero hace falta depurarlo porque para mi tiene 2 fallos:

El primero es que no contempla los años bisiestos y necesito que los contemple, y eso no se como hacerlo.

El segundo es posible que ya este en fase de solucionarlo por mi mismo aunque de momento todavia no me funciona y es que yo preciso que la fecha inicial sea siempre el 1 de Enero del año en que nos encontramos y la fecha final sea la fecha actual de hoy, en estos momentos lo estoy intentado usando funciones de PHP tipo (getMonth - getDate - getFullYear) espero estar por el buen camino para encontrar la solución.

Lo de los años bisiestos ni idea, aconsejarme.

Bueno gracias y un saludo
  #5 (permalink)  
Antiguo 12/04/2012, 04:04
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Dias transcurridos desde el inicio del año

Cita:
Iniciado por ra120354 Ver Mensaje
Ese código me vale porque hace lo que necesito, pero hace falta depurarlo porque para mi tiene 2 fallos:
El primero es que no contempla los años bisiestos y necesito que los contemple, y eso no se como hacerlo.
El segundo es posible que ya este en fase de solucionarlo por mi mismo
Esta parte que cite me gustaron por que la idea es que te pongas a prueba y tu mismo puedas llegar a encontrar la solución.

Los anios bisiesto son aquellos que son divisibles por 4 para mas info
puedes buscar aqui Wiki

determinar un anio bisiesto en php es mucho mas facil de lo que te imaginas
puedes echarle el ojo al manual especificamente a la funcion date y de paso podrias ver la funcion mktime
  #6 (permalink)  
Antiguo 13/04/2012, 12:00
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Solucionado: Dias transcurridos desde el inicio del año

Gracias a los dos gjx2 y a unreal4u por vuestra ayuda.

Bueno ya esta solucionado, lo pongo aquí por si a alguien que sepa tan poco como yo de PHP le puede servir.

Código PHP:
Ver original
  1. <?php
  2. //Fecha Inicial
  3. $ano1 = date("Y");
  4. $mes1 = 1;
  5. $dia1 = 1;
  6.  
  7. //Fecha de Hoy
  8. $ano2 = date("Y");
  9. $mes2 = date("n");
  10. $dia2 = date("j");
  11.  
  12. //calculo entre las dos fechas
  13. $FechaInicial = mktime(0,0,0,$mes1,$dia1,$ano1);
  14. $FechaHoy = mktime(0,0,0,$mes2,$dia2,$ano2); // Si quiero que cuente el día que estamos como transcurrido poner la hora  a 24 h.
  15.  
  16. //calculo los segundos de diferencia entre las 2 fechas
  17. $segundos_dif = $FechaInicial - $FechaHoy;
  18.  
  19. //convierto segundos en días
  20. $dias_dif = $segundos_dif / (60 * 60 * 24);
  21.  
  22. //valor total de los días
  23. $dias_dif = abs($dias_dif);
  24.  
  25. //Redondeo los días de diferencia
  26. $dias_dif = floor($dias_dif);
  27.  
  28. echo $dias_dif;
  29. ?>

Un saludo y gracias a todos.
  #7 (permalink)  
Antiguo 13/04/2012, 13:06
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Dias transcurridos desde el inicio del año

Aunque depende de para qué lo quieres, si nos apegamos al os días transcurridos desde el inicio del año, tu solución me da 102 días (al día de hoy) y han pasado (transcurrido) 103, por eso te decía que ocuparas time() como actual y luego con floor() le bajas para quedar al día actual, así:

Código PHP:
$diasTranscurridos floor((time() - mktime(0,0,0,1,1,date('Y'))) / (3600*24)); 
Saludos.

PD: enero (31) + febrero (29) + marzo (31) + abril (12) == 103
  #8 (permalink)  
Antiguo 14/04/2012, 02:26
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dias transcurridos desde el inicio del año

unreal4u. Tomo nota de tu sugerencia y te lo agradezco porque no habia pensado en esa forma de hacerlo, pero es así como necesito que funcione ya que los dias transcurridos salen correctos:

En la función a fecha de hoy 14 de abril me salen 104 días.

Enero(31)+Febrero (29)+marzo (31)+Abril(14) = 105 días, hay aparentemente una diferencia de 1 día pero es que el día de hoy que es el 14/04/2012 todavia no ha transcurrido, estamos en el hasta que finalice que lo hara a la medianoche (24 Horas), por lo tanto no lo debe de contar hasta que pase la medianoche.

No obstante si quisiera que lo contara con el código que puse solo tendria que modificar la linea: 14
Código PHP:
$FechaHoy mktime(0,0,0,$mes2,$dia2,$ano2); 
por esta otra:
Código PHP:
$FechaHoy mktime(24,0,0,$mes2,$dia2,$ano2); 
Referencia a la funcion (mktime):
Cita:
hour
El número de la hora relativa al inicio del día determinado por month, day y year. Los valores negativos referencian la hora antes de la media noche del día en cuestión. Los valores mayores que 23 referencian la hora apropiada en el/los día/s siguiente/s.
Un saludo y muchisimas gracias por vuestra ayuda ha sido todo un placer.

Etiquetas: año, dias, inicio, variables
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 13:26.