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/**
* Clase que maneja fechas (dia,mes,a\u00f1o)
*
* @author Misael Saenz Flores
* @version Octubre 2013
*/
public class CFecha {
//Atributos
private int dia,mes,anio;
/**
* Contructor por omision
* <br>Contructor que permite definir una fecha valida
*/
public CFecha() {
dia = 1;
mes = 1;
anio = 1900;
}
public CFecha(int d, int m, int a) {
if (esAnioBisiesto(a) && m == 2 && (d < 1 || d > 29)) {
System.
out.
println("Dia invalido para \"Febrero\" ya que es un a\u00f1o"); }
if (m == 2 && (d < 1 || d > 28)) {
System.
out.
println("Dia invalido para febrero"); }
if (d < 0 || d > 31) {
System.
out.
println("Dia invalido no se creo la fecha"); }
if (a < 1800 || a > 3000) {
System.
out.
println("A\u00f1o invalido"); }
if (m > 12 || m < 1) {
System.
out.
println("Mes invalido"); }
dia = d;
mes = m;
anio = a;
}
public CFecha
(int d,
String ms,
int a
){ if (esAnioBisiesto(a) && ms.equals("Febrero") && (d < 1 || d > 29)) {
System.
out.
println("Dia invalido para \"Febrero\" ya que es un a\u00f1o bisiesto"); }
if (ms.equals("Febrero") && (d < 1 || d > 28)) {
System.
out.
println("Dia invalido para febrero"); }
if (d < 0 || d > 31) {
System.
out.
println("Dia invalido no se creo la fecha"); }
if (a < 1800 || a > 3000) {
System.
out.
println("A\u00f1o invalido"); }
if (ms.equals("Diciembre") || ms.equals("Enero")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Febrero") || ms.equals("Marzo")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Abril") || ms.equals("Mayo")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Junio") || ms.equals("Julio")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Agosto") || ms.equals("Septiembre")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Octubre") || ms.equals("Noviembre")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
dia = d;
anio = a;
}
private boolean esAnioBisiesto(int a){
return (a%4 == 0 && a%1000!= 0 ) || a %400 == 0;
}
public CFecha(CFecha fecha){
this(fecha.obtenerDia(), fecha.obtenerMes(), fecha.obtenerAnio());
}
public void asignarDia(int d){
if(esAnioBisiesto(d) && mes== 2 && ms.equals("Febrero") && (dia < 0 || dia > 29)){
System.
out.
println("Dia no valido"); }else
if(mes == 2 && ms.equals("Febrero") && (dia < 0 || dia > 28)){
System.
out.
println("Dia no valido"); }else
if (dia < 0 || dia > 31)
System.
out.
println("Dia no valido"); else
dia = d;
}
public void asignarMes(int m){
if (m < 0 || m > 12){
System.
out.
println("Mes invalido"); }else
mes = m;
}
public void asignarMesN
(String ms
){ if (ms.equals("Diciembre") || ms.equals("Enero")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Febrero") || ms.equals("Marzo")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Abril") || ms.equals("Mayo")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Junio") || ms.equals("Julio")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Agosto") || ms.equals("Septiembre")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
if (ms.equals("Octubre") || ms.equals("Noviembre")) {
nmes = ms;
}else{
System.
out.
println("Mes invalido"); }
}
public void asignarAnio(int a){
if (a < 1800 || a > 3000){
System.
out.
println("A\u00f1o invalido"); }else
anio = a;
}
public int obtenerDia(){
return dia;
}
public int obtenerMes(){
return mes;
}
return nmes;
}
public int obtenerAnio(){
return anio;
}
public int obtenerDiferencia(CFecha f){
if(mes == f.obtenerMes() && anio == f.obtenerAnio()){
return Math.
abs(dia
- f.
obtenerDia()); }else{
System.
out.
println("No podemos regresar la diferencia de dias"); return 0;
}
}
public CFecha recorrerDias(CFecha f, int d){
f.asignarDia(f.obtenerDia() + d);
return f;
}
public boolean equals
(Object obj
){ CFecha f = (CFecha)obj;
return dia == f.obtenerDia() && mes == f.obtenerMes() && anio == f.obtenerAnio();
}
public int obtenerNumeroMes
(String nmes
){ if (nmes.equalsIgnoreCase("Enero")){
return 1;
}
if (nmes.equalsIgnoreCase("Febrero")){
return 2;
}
if (nmes.equalsIgnoreCase("Marzo")){
return 3;
}
if (nmes.equalsIgnoreCase("Abril")){
return 4;
}
if (nmes.equalsIgnoreCase("Mayo")){
return 5;
}
if (nmes.equalsIgnoreCase("Junio")){
return 6;
}
if (nmes.equalsIgnoreCase("Julio")){
return 7;
}
if (nmes.equalsIgnoreCase("Agosto")){
return 8;
}
if (nmes.equalsIgnoreCase("Septiembre")){
return 9;
}
if (nmes.equalsIgnoreCase("Octubre")){
return 10;
}
if (nmes.equalsIgnoreCase("Noviembre")){
return 11;
}
if (nmes.equalsIgnoreCase("Diciembre")){
return 12;
}
return -1;
}
public String dameNombreMes
(int mes
){ if(mes==1)
return "Enero";
if(mes==2)
return "Febrero";
if(mes==3)
return "Marzo";
if(mes==4)
return "Abril";
if(mes==5)
return "Mayo";
if(mes==6)
return "Junio";
if(mes==7)
return "Julio";
if(mes==8)
return "Agosto";
if(mes==9)
return "Septiembre";
if(mes==10)
return "Octubre";
if(mes==11)
return "Noviembre";
if(mes==12)
return "Diciembre";
return " ";
}
return dia +"/"+dameNombreMes(mes)+"/"+anio;
}
/**
*
*
*/
public int obtenerDiasTrans(CFecha f){
//.........
}
}