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

[SOLUCIONADO] Dada una fecha dar dias transcurridos en el año

Estas en el tema de Dada una fecha dar dias transcurridos en el año en el foro de Java en Foros del Web. Hola amigos pues no entiendo hacer muy bien esto ya me atrofie si me echaran una manita se los agradecería. Me piden esto: Dada una ...
  #1 (permalink)  
Antiguo 05/10/2013, 13:16
Avatar de ninga  
Fecha de Ingreso: diciembre-2011
Ubicación: Mexico
Mensajes: 19
Antigüedad: 12 años, 4 meses
Puntos: 0
Exclamación Dada una fecha dar dias transcurridos en el año

Hola amigos pues no entiendo hacer muy bien esto ya me atrofie si me echaran una manita se los agradecería.

Me piden esto: Dada una fecha, especificar los días transcurridos en el año. Por ejemplo, 30 de diciembre de 2006, debe devolver 364.

Mi codigo:
Código Java:
Ver original
  1. /**
  2.  * Clase que maneja fechas (dia,mes,a\u00f1o)
  3.  *
  4.  * @author Misael Saenz Flores
  5.  * @version Octubre 2013
  6.  */
  7. public class CFecha {
  8.     //Atributos
  9.  
  10.     private int dia,mes,anio;
  11.     private String nmes,ms;
  12.  
  13.     /**
  14.      * Contructor por omision
  15.      * <br>Contructor que permite definir una fecha valida
  16.      */
  17.     public CFecha() {
  18.         dia = 1;
  19.         mes = 1;
  20.         anio = 1900;
  21.     }
  22.  
  23.     public CFecha(int d, int m, int a) {
  24.         if (esAnioBisiesto(a) && m == 2 && (d < 1 || d > 29)) {
  25.             System.out.println("Dia invalido para \"Febrero\" ya que es un a\u00f1o");
  26.             System.exit(0);
  27.         }
  28.         if (m == 2 && (d < 1 || d > 28)) {
  29.             System.out.println("Dia invalido para febrero");
  30.             System.exit(0);
  31.         }
  32.         if (d < 0 || d > 31) {
  33.             System.out.println("Dia invalido no se creo la fecha");
  34.             System.exit(0);
  35.         }
  36.         if (a < 1800 || a > 3000) {
  37.             System.out.println("A\u00f1o invalido");
  38.             System.exit(0);
  39.         }
  40.         if (m > 12 || m < 1) {
  41.             System.out.println("Mes invalido");
  42.             System.exit(0);
  43.         }
  44.         dia = d;
  45.         mes = m;
  46.         anio = a;
  47.     }
  48.  
  49.     public CFecha(int d,String ms,int a){
  50.          if (esAnioBisiesto(a) && ms.equals("Febrero") && (d < 1 || d > 29)) {
  51.             System.out.println("Dia invalido para \"Febrero\" ya que es un a\u00f1o bisiesto");
  52.             System.exit(0);
  53.         }
  54.         if (ms.equals("Febrero") && (d < 1 || d > 28)) {
  55.             System.out.println("Dia invalido para febrero");
  56.             System.exit(0);
  57.         }
  58.         if (d < 0 || d > 31) {
  59.             System.out.println("Dia invalido no se creo la fecha");
  60.             System.exit(0);
  61.         }
  62.         if (a < 1800 || a > 3000) {
  63.             System.out.println("A\u00f1o invalido");
  64.             System.exit(0);
  65.         }
  66.         if (ms.equals("Diciembre") || ms.equals("Enero")) {
  67.             nmes = ms;
  68.         }else{
  69.             System.out.println("Mes invalido");
  70.             System.exit(0);
  71.         }
  72.         if (ms.equals("Febrero") || ms.equals("Marzo")) {
  73.             nmes = ms;
  74.         }else{
  75.             System.out.println("Mes invalido");
  76.             System.exit(0);
  77.         }
  78.         if (ms.equals("Abril") || ms.equals("Mayo")) {
  79.             nmes = ms;
  80.         }else{
  81.             System.out.println("Mes invalido");
  82.             System.exit(0);
  83.         }
  84.         if (ms.equals("Junio") || ms.equals("Julio")) {
  85.             nmes = ms;
  86.         }else{
  87.             System.out.println("Mes invalido");
  88.             System.exit(0);
  89.         }
  90.         if (ms.equals("Agosto") || ms.equals("Septiembre")) {
  91.             nmes = ms;
  92.         }else{
  93.             System.out.println("Mes invalido");
  94.             System.exit(0);
  95.         }
  96.         if (ms.equals("Octubre") || ms.equals("Noviembre")) {
  97.             nmes = ms;
  98.         }else{
  99.             System.out.println("Mes invalido");
  100.             System.exit(0);
  101.         }
  102.         dia = d;
  103.         anio = a;
  104.     }
  105.    
  106.  
  107.     private boolean esAnioBisiesto(int a){
  108.       return (a%4 == 0 && a%1000!= 0 ) || a %400 == 0;
  109.     }
  110.    
  111.     public CFecha(CFecha fecha){
  112.         this(fecha.obtenerDia(), fecha.obtenerMes(), fecha.obtenerAnio());
  113.     }
  114.    
  115.     public void asignarDia(int d){
  116.         if(esAnioBisiesto(d) && mes== 2 && ms.equals("Febrero") && (dia < 0 || dia > 29)){
  117.             System.out.println("Dia no valido");
  118.         }else
  119.             if(mes == 2 && ms.equals("Febrero") && (dia < 0 || dia > 28)){
  120.                 System.out.println("Dia no valido");
  121.             }else
  122.               if (dia < 0 || dia > 31)
  123.                    System.out.println("Dia no valido");
  124.               else
  125.                  dia =  d;        
  126.     }
  127.    
  128.     public void asignarMes(int m){
  129.         if (m < 0 || m > 12){
  130.             System.out.println("Mes invalido");
  131.         }else
  132.             mes = m;
  133.     }
  134.    
  135.     public void asignarMesN(String ms){
  136.         if (ms.equals("Diciembre") || ms.equals("Enero")) {
  137.             nmes = ms;
  138.         }else{
  139.             System.out.println("Mes invalido");
  140.             System.exit(0);
  141.         }
  142.         if (ms.equals("Febrero") || ms.equals("Marzo")) {
  143.             nmes = ms;
  144.         }else{
  145.             System.out.println("Mes invalido");
  146.             System.exit(0);
  147.         }
  148.         if (ms.equals("Abril") || ms.equals("Mayo")) {
  149.             nmes = ms;
  150.         }else{
  151.             System.out.println("Mes invalido");
  152.             System.exit(0);
  153.         }
  154.         if (ms.equals("Junio") || ms.equals("Julio")) {
  155.             nmes = ms;
  156.         }else{
  157.             System.out.println("Mes invalido");
  158.             System.exit(0);
  159.         }
  160.         if (ms.equals("Agosto") || ms.equals("Septiembre")) {
  161.             nmes = ms;
  162.         }else{
  163.             System.out.println("Mes invalido");
  164.             System.exit(0);
  165.         }
  166.         if (ms.equals("Octubre") || ms.equals("Noviembre")) {
  167.             nmes = ms;
  168.         }else{
  169.             System.out.println("Mes invalido");
  170.             System.exit(0);
  171.         }
  172.     }
  173.    
  174.     public void asignarAnio(int a){
  175.         if (a < 1800 || a > 3000){
  176.             System.out.println("A\u00f1o invalido");
  177.         }else
  178.             anio = a;
  179.     }
  180.    
  181.     public int obtenerDia(){
  182.         return dia;
  183.     }
  184.    
  185.     public int obtenerMes(){
  186.         return mes;
  187.     }
  188.    
  189.     public String obtenerMesN(){
  190.         return nmes;
  191.     }
  192.    
  193.     public int obtenerAnio(){
  194.         return anio;
  195.     }
  196.    
  197.     public int obtenerDiferencia(CFecha f){
  198.       if(mes == f.obtenerMes() && anio == f.obtenerAnio()){
  199.         return  Math.abs(dia - f.obtenerDia());
  200.       }else{
  201.         System.out.println("No podemos regresar la diferencia de dias");
  202.         return 0;
  203.       }
  204.     }
  205.    
  206.     public CFecha recorrerDias(CFecha f, int d){
  207.         f.asignarDia(f.obtenerDia() + d);
  208.         return f;
  209.     }
  210.    
  211.     public boolean equals(Object obj){
  212.         CFecha f =  (CFecha)obj;
  213.         return dia == f.obtenerDia() && mes == f.obtenerMes() && anio == f.obtenerAnio();
  214.     }
  215.    
  216.     public int obtenerNumeroMes(String nmes){
  217.         if (nmes.equalsIgnoreCase("Enero")){
  218.             return 1;
  219.         }
  220.         if (nmes.equalsIgnoreCase("Febrero")){
  221.             return 2;
  222.         }
  223.         if (nmes.equalsIgnoreCase("Marzo")){
  224.             return 3;
  225.         }
  226.         if (nmes.equalsIgnoreCase("Abril")){
  227.             return 4;
  228.         }
  229.         if (nmes.equalsIgnoreCase("Mayo")){
  230.             return 5;
  231.         }
  232.         if (nmes.equalsIgnoreCase("Junio")){
  233.             return 6;
  234.         }
  235.         if (nmes.equalsIgnoreCase("Julio")){
  236.             return 7;
  237.         }
  238.         if (nmes.equalsIgnoreCase("Agosto")){
  239.             return 8;
  240.         }
  241.         if (nmes.equalsIgnoreCase("Septiembre")){
  242.             return 9;
  243.         }
  244.         if (nmes.equalsIgnoreCase("Octubre")){
  245.             return 10;
  246.         }
  247.         if (nmes.equalsIgnoreCase("Noviembre")){
  248.             return 11;
  249.         }
  250.         if (nmes.equalsIgnoreCase("Diciembre")){
  251.             return 12;
  252.         }
  253.         return -1;
  254.     }
  255.    
  256.    
  257.     public String dameNombreMes(int mes){
  258.       if(mes==1)
  259.         return "Enero";
  260.       if(mes==2)
  261.         return "Febrero";
  262.       if(mes==3)
  263.         return "Marzo";
  264.       if(mes==4)
  265.         return "Abril";
  266.       if(mes==5)
  267.         return "Mayo";
  268.       if(mes==6)
  269.         return "Junio";
  270.       if(mes==7)
  271.         return "Julio";
  272.       if(mes==8)
  273.         return "Agosto";
  274.       if(mes==9)
  275.         return "Septiembre";
  276.       if(mes==10)
  277.         return "Octubre";
  278.       if(mes==11)
  279.         return "Noviembre";
  280.       if(mes==12)
  281.         return "Diciembre";
  282.       return " ";
  283.     }
  284.    
  285.     public String toString(){
  286.         return dia +"/"+dameNombreMes(mes)+"/"+anio;
  287.     }
  288.    
  289.     /**
  290.      *
  291.      *
  292.      */
  293.     public int obtenerDiasTrans(CFecha f){
  294.       //.........
  295.     }
  296. }
  #2 (permalink)  
Antiguo 06/10/2013, 12:53
Avatar de Krain  
Fecha de Ingreso: julio-2013
Ubicación: Valencia
Mensajes: 60
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Dada una fecha dar dias transcurridos en el año

Espero que esto te sirva.
Saludos

Código Java:
Ver original
  1. package ForosDelWeb;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /*
  6.  * @author Krain
  7.  */
  8.  
  9. public class CFecha
  10. {
  11.     public static void main(String[]args)
  12.     {
  13.         int dia, mes, año, nDias;
  14.         Scanner tec = new Scanner(System.in);
  15.         System.out.printf("Introduce el dia: ");
  16.         dia = tec.nextInt();
  17.         System.out.printf("Introduce el mes: ");
  18.         mes = tec.nextInt();
  19.         System.out.printf("Introduce el anyo: ");
  20.         año = tec.nextInt();
  21.         nDias = dia;
  22.         for(int i = 1; i < mes; i++)
  23.         {
  24.             switch(i)
  25.             {
  26.                 case 4: case 6: case 9: case 11:
  27.                     nDias += 30;
  28.                     break;
  29.                 case 2:
  30.                     if(bisiesto(año))
  31.                     {
  32.                         nDias += 29;
  33.                     }
  34.                     else
  35.                     {
  36.                         nDias += 28;
  37.                     }
  38.                     break;
  39.                     default:
  40.                         nDias += 31;
  41.                         break;
  42.             }
  43.         }
  44.         System.out.println("El " + dia + " del " + mes + " de " + año + " es el dia numero " + nDias + " del año " + año);
  45.     }
  46.     public static boolean bisiesto(int a)
  47.     {
  48.         boolean bisiesto;
  49.         if(a%4 == 0 && a%100 != 0 || a%400 == 0)
  50.         {
  51.             bisiesto = true;
  52.         }            
  53.         else
  54.         {
  55.             bisiesto= false;
  56.         }            
  57.         return bisiesto;
  58.     }
  59. }
__________________
01001011 01110010 01100001 01101001 01101110
  #3 (permalink)  
Antiguo 07/10/2013, 17:36
Avatar de ninga  
Fecha de Ingreso: diciembre-2011
Ubicación: Mexico
Mensajes: 19
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Dada una fecha dar dias transcurridos en el año

Cita:
Iniciado por Krain Ver Mensaje
Espero que esto te sirva.
Saludos

Código Java:
Ver original
  1. package ForosDelWeb;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /*
  6.  * @author Krain
  7.  */
  8.  
  9. public class CFecha
  10. {
  11.     public static void main(String[]args)
  12.     {
  13.         int dia, mes, año, nDias;
  14.         Scanner tec = new Scanner(System.in);
  15.         System.out.printf("Introduce el dia: ");
  16.         dia = tec.nextInt();
  17.         System.out.printf("Introduce el mes: ");
  18.         mes = tec.nextInt();
  19.         System.out.printf("Introduce el anyo: ");
  20.         año = tec.nextInt();
  21.         nDias = dia;
  22.         for(int i = 1; i < mes; i++)
  23.         {
  24.             switch(i)
  25.             {
  26.                 case 4: case 6: case 9: case 11:
  27.                     nDias += 30;
  28.                     break;
  29.                 case 2:
  30.                     if(bisiesto(año))
  31.                     {
  32.                         nDias += 29;
  33.                     }
  34.                     else
  35.                     {
  36.                         nDias += 28;
  37.                     }
  38.                     break;
  39.                     default:
  40.                         nDias += 31;
  41.                         break;
  42.             }
  43.         }
  44.         System.out.println("El " + dia + " del " + mes + " de " + año + " es el dia numero " + nDias + " del año " + año);
  45.     }
  46.     public static boolean bisiesto(int a)
  47.     {
  48.         boolean bisiesto;
  49.         if(a%4 == 0 && a%100 != 0 || a%400 == 0)
  50.         {
  51.             bisiesto = true;
  52.         }            
  53.         else
  54.         {
  55.             bisiesto= false;
  56.         }            
  57.         return bisiesto;
  58.     }
  59. }
Gracias amigo, ya lo solucione con un contador, muchisimas gracias :)

Etiquetas: clase, clases, dias, fecha, meses, metodo
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:30.