Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/10/2013, 13:16
Avatar de ninga
ninga
 
Fecha de Ingreso: diciembre-2011
Ubicación: Mexico
Mensajes: 19
Antigüedad: 12 años, 5 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. }