/// <summary> /// Devolve a diferença, em dias, de duas datas DO MESMO ANO. Supõe que a data2 seja mais recente. /// </summary> /// <param name="data2">A data usada como base para a diferença. Será considerada sempre como data do mesmo ano.</param> /// <returns></returns> public int DiffDiasAno(AEDData data2) { int cont = 0; AEDData aux = (AEDData)(this.MemberwiseClone()); // Clona a data, para não modificar o valor do objeto while (aux.mes != data2.mes) // Cálculo "braçal": avança de um em um dia até chegar ao mês da 2a data. { aux.acrescentaDias(1); cont++; } cont += data2.dia; // Dentro do mês, soma os dias da 2a data. return(cont); }
/// <summary> /// Devolve a diferença, em anos completos, entre esta e outra data. Supõe que a data2 seja mais recente. /// </summary> /// <param name="data2">A data usada como base para calcular a diferença.</param> /// <returns></returns> public int DiffAnos(AEDData data2) { if (this.ano == data2.ano) { return(0); } int anos = Math.Abs(data2.ano - this.ano); // Calcula a diferença absoluta (sem sinal) entre os anos if (this.mes < data2.mes) { // Corrige a diferença: se o mês da data ainda não foi alcançado neste anos... return(anos - 1); // Diminui um ano e retorna } if ((this.mes == data2.mes) && (this.dia > data2.dia)) { // Corrige a diferença: se o mês foi alcançado, mas o dia não... return(anos - 1); // Diminui um ano e retorna } return(anos); // Retorna a diferença original }
public int diffDias(AEDData data2) { AEDData dataMenor, dataMaior; int menor = 0; int cont = 0; menor = (this.ano - data2.ano); if (menor == 0) { menor = this.mes - data2.mes; if (menor == 0) { menor = this.dia - data2.dia; if (menor == 0) { return(0); } } } if (menor < 0) { dataMenor = (AEDData)(this.MemberwiseClone()); dataMaior = (AEDData)(data2.MemberwiseClone()); } else { dataMenor = (AEDData)(data2.MemberwiseClone()); dataMaior = (AEDData)(this.MemberwiseClone()); } while ((dataMenor.dia != dataMaior.dia) || (dataMenor.mes != dataMaior.mes) || (dataMenor.ano != dataMaior.ano)) { dataMenor.acrescentaDias(1); cont++; } return(cont); }