コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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
        }
コード例 #3
0
        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);
        }