Foros del Web » Programación para mayores de 30 ;) » Java »

Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Estas en el tema de Como tranformar numero de dias pasados del año a el dia y numero de mes ?? en el foro de Java en Foros del Web. Hola a todos de nuevo, pues el problema que tengo es el siguiente: hacer un applet que pida el año y el número de días ...
  #1 (permalink)  
Antiguo 21/02/2012, 18:09
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Pregunta Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Hola a todos de nuevo, pues el problema que tengo es el siguiente: hacer un applet que pida el año y el número de días transcurridos de ese año (mediante dos campos de texto) y que te calcule el día y mes que se trate y te deje el mismo año (tres campos de texto resultantes), por ejemplo si tiene 70 días del año 2004, entonces deberá de escribir en el campo resultante de días la cantidad de 10, en el mes la cantidad de 3, y el mismo año el año resultante, entonces para 2004,70 deberá de dar 10, 3, 2004, y creo que la mejor manera seria resolverlo o desarrollarlo con los operadores logicos. pues yo he hecho algo pero lo que me complica el problema es los años bisiestos por que tengo que tener cuidado con eso...

Código Javascript:
Ver original
  1. package transcurridosapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Button;
  5. import java.awt.Graphics;
  6. import java.awt.Label;
  7. import java.awt.TextField;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10.  
  11. /**
  12.  * @param 21/02/2012
  13.  * @author Deivis Andres Herrera Julio
  14.  */
  15. public class TranscurridosApplet extends Applet implements ActionListener {
  16.     Label l1, l2, l3, l4, l5;
  17.     TextField t1, t2, t3, t4, t5;
  18.     Button b;
  19.     public TranscurridosApplet(){
  20.         l1 = new Label("Años");
  21.         t1 = new TextField("",3);
  22.         l2 = new Label("Dias");
  23.         t2 = new TextField("",2);
  24.         b = new Button("Convertir");
  25.         l3 = new Label("Año");
  26.         t3 = new TextField("",3);
  27.         l4 = new Label("Mes");
  28.         t4 = new TextField("",2);
  29.         l5 = new Label("Dias");
  30.         t5 = new TextField("",2);
  31.         add(l1);
  32.         add(t1);
  33.         add(l2);
  34.         add(t2);
  35.         add(b);
  36.         add(l3);
  37.         add(t3);
  38.         add(l4);
  39.         add(t4);
  40.         add(l5);
  41.         add(t5);
  42.         b.addActionListener(this);
  43.     }
  44.     public void paint(Graphics g){
  45.         int año = Integer.parseInt(t1.getText());
  46.         int dias = Integer.parseInt(t2.getText());
  47.  
  48.  
  49.         t3.setText(""+año);
  50.     }
  51.     public void actionPerformed(ActionEvent ae){
  52.         repaint();
  53.     }
  54. }

Pues yo he pensado en puedo hacerlo de la forma en que:
dias = X;
mes = 1;
if (dias > 30) { // Al menos febrero
mes = 2;
dias -= 30;
}
..
Entonces voy restando los días de cada mes hasta hallar el mes que se trata. Los dias que queden seran los dias del mes. pero, pero no se como meter los bisiestos, entonces lo que pido es una ayuda de como tendría que ir esa condición metiendo los bisiestos... de verdad les agradecería la ayuda...
  #2 (permalink)  
Antiguo 21/02/2012, 20:16
Avatar de Sirius381  
Fecha de Ingreso: abril-2006
Mensajes: 129
Antigüedad: 18 años
Puntos: 12
Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Existe una clase que ya trae el calculo de los años bisiestos, lo malo que no recuerdo cual es :S pero esa por ejemplo ya te da que 2012 es bisiesto y 2013 no, creo que resuelve tu problema es cosa de investigar cual es, si doy con el dato antes que tu te actualizo el post.

Saludos!!
__________________
Don Ramón Fan
  #3 (permalink)  
Antiguo 22/02/2012, 04:16
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Si he entendido bien lo que pides, yo lo haría mediante los objetos de Calendario como GregorianCalendar:

Código:
import java.util.Calendar;
import java.util.GregorianCalendar;
Código:
GregorianCalendar cal = new GregorianCalendar(2004,0,1); //El mes va de 0 a 11
cal.add(Calendar.DATE,10-1); //se le resta 1 porque ya estaba en 1/ene/2004
Luego, para obtener el día, mes y año pondría lo siguiente (al mes le estoy sumando 1 por lo que te comentaba, el mes va de 0 a 11 en Gregorian Calendar):
Código:
cal.get(Calendar.DAY_OF_MONTH)
Código:
(cal.get(Calendar.MONTH)+1)
Código:
cal.get(Calendar.YEAR);
Por cierto, te recomiendo no poner eñe en la variable de "año". Aunque poniendo "ano" quede mal, es más recomendable.
  #4 (permalink)  
Antiguo 22/02/2012, 07:11
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Como complemento a lo expuesto por JavaDev.

1º Creas en calendar el primer día de ese año.
2º Obtienes el DateTime (en milisegundos)
3º Conviertes tus días transcurridos en milisegundos (Ndias*24*3600*1000)
4º Sumas estos milisegundos al DateTime obtenido
5º Con estos datos generas un nuevo GregorianCalendar con el nuevo DateTime de parámetro.
6º Ese GregorianCalendar ya es el día buscado, con lo cual puedes usar los métodos que JavaDev te ha indicado para obtener lo que quieras.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 22/02/2012, 13:40
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Sirius381, JavaDev, Fuzzylog gracias por la ayuda la libreria calendario de java si es una buena opcion pero no queria ir me por la esa parte (como lo facil) pues se que java implementa calendario... pero pues gracias por la ayuda, yo lo hice de una forma un poco facil aqui se las muestro lo que hice fue:

Código Javascript:
Ver original
  1. public void paint(Graphics g){
  2.         int mes = 0;
  3.         double dia = 0;
  4.         int ano = Integer.parseInt(t1.getText());
  5.         int dias = Integer.parseInt(t2.getText());
  6.         mes = dias/30;
  7.         dia = mes/mes;
  8.  
  9.         t3.setText(""+ano);
  10.         t4.setText(""+mes);
  11.         t5.setText(""+dia);
  12.     }

Pues no pude meter los bisiestos, pero lo que ustedes me dicen intentare probarlo para ver como me sale.... gracias de verdad...
  #6 (permalink)  
Antiguo 23/02/2012, 02:28
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

La regla de los años bisiestos es que sean divisibles entre 4. Si el año es divisible entre 100, entonces no será bisiesto salvo que también lo sea entre 400.

Así serían bisiestos los años 1600,2000, 2004, 2008,2012... pero no lo serían los años 1900 y 2100.

Sólo tendrías que implementar esa regla. Y si lo quieres más ajustado tendrías que tener definidos los días reales de cada més, que son fijos excepto febrero, que deberias tener 2, febreroNormal con 28 y febreroBisiesto con 29.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 14/03/2012, 09:03
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Gracias por la ayuda a todos, ya solucione el problema...


Solucionado...
  #8 (permalink)  
Antiguo 18/02/2014, 12:19
 
Fecha de Ingreso: febrero-2014
Mensajes: 2
Antigüedad: 10 años, 2 meses
Puntos: 0
Pregunta Respuesta: Como tranformar numero de dias pasados del año a el dia y numero de mes ??

Pido una urgente ayuda con el programa siguiente

un applet que te pida el número de días transcurridos en el año y el año en el que se trate (mediante dos campos de texto) y que te calcule el día y mes que se trate y te deje el mismo año (tres campos de texto resultantes), por ejemplo si tiene 70 días del año 2004, entonces deberá de escribir en el campo resultante de días la cantidad de 10, en el mes la cantidad de 3, y el mismo año en el año resultante, entonces para 2004, 70 deberá de dar 10, 3, 2004

lo eh estado haciendo con condicionales pero no me sale como podria intentar los dias faltantes en el mes solo me faltaria eso

Label l1, l2, l3, l4, l5;
TextField t1, t2, t3, t4, t5;
Button b;
public Diastrascurridos (){
l1 = new Label("Años");
t1 = new TextField("",3);
l2 = new Label("Dias");
t2 = new TextField("",2);
b = new Button("Convertir");
l3 = new Label("Año");
t3 = new TextField("",3);
l4 = new Label("Mes");
t4 = new TextField("",2);
l5 = new Label("Dias");
t5 = new TextField("",2);
add(l1);
add(t1);
add(l2);
add(t2);
add(b);
add(l3);
add(t3);
add(l4);
add(t4);
add(l5);
add(t5);
b.addActionListener(this);
}

public void actionPerformed(ActionEvent ae){

int año = Integer.parseInt(t1.getText());
int dias = Integer.parseInt(t2.getText());
int mes=0;

int resultado=0;
if(dias>=1 && dias<=31 ){
mes=1;

}else if (dias>=32 && dias<=60){
mes=2;


}else if (dias>=61 && dias <=91){
mes=3;

}else if(dias>=92 && dias <=121){
mes =4;

}else if(dias>=122 && dias <=152){
mes=5;

}else if (dias>=153 && dias<=182){
mes=6;
dias-=30;
}else if (dias>=183 && dias<=213){
mes=7;

}else if (dias>=214 && dias<=244){
mes=8;

}else if (dias>=245 && dias<=274){
mes=9;
dias-=30;
}else if (dias>=275 && dias<= 305){
mes=10;

}else if (dias>=306 && dias<=335){
mes=11;

}else if(dias >=336 && dias<=366){
mes=12;

}else{
JOptionPane.showMessageDialog(null, "Vuelva a Ingresar fecha", "Error",JOptionPane.ERROR_MESSAGE);
}
t4.setText(""+mes);
t5.setText(""+dias);
t3.setText(""+año);
}

Etiquetas: applet
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:56.