Array
(
)

Calcular data em C#

Tinho
|
MVP
    16 ago 2011

Pessoal Bom Dia,

Preciso de uma dica de vocês para passar esse código pl_Sql abaixo para calcular em c#.


#Código

FLOOR (MONTHS_BETWEEN (NVL (dt_termino, SYSDATE) + 1, dt_inicio)/ 12)AS ano, 
FLOOR (MONTHS_BETWEEN (NVL (dt_termino, SYSDATE) + 1, dt_inicio))
- FLOOR (MONTHS_BETWEEN (NVL (dt_termino, SYSDATE) + 1, dt_inicio)/ 12)* 12
 AS mes, (ROUND (MOD (MONTHS_BETWEEN (NVL (dt_termino, SYSDATE) + 1, dt_inicio),
 1)* 30,0)) AS dia


Resultado em:

Anos:
Meses:
Dias:

Por gentileza um Help pessoal!!!

Fabio Rosa
   - 16 ago 2011

Olá,
Pelo que percebi a sua função acima considera todos os meses com 30 dias, ou seja, desconsidera os fevereiros...??
Se for considerar um ano com 365 dias e todos os meses com 30 dias, podes fazer assim (por exemplo):
    class Program    {        static void Main(string[] args)        {            DateTime datainicial = DateTime.Parse("30/03/2008");            DateTime datafinal = DateTime.Parse("05/05/2011");            TimeSpan diferenca = datafinal.Subtract(datainicial);                                               int anos = diferenca.Days / 365;            int meses = (diferenca.Days - (anos * 365)) / 30;            int dias = ((diferenca.Days - (anos * 365)) - (meses * 30));
            Console.WriteLine("Difere em {0} ano(s), {1} mes(es) e {2} dia(s)", anos, meses, dias);                            Console.ReadLine();                  }    }

porém, se quiser um cálculo mais exato deverá trabalhar os meses de fevereiro e as diferenças de 30 e 31 de cada mês, assim como o total de dias de cada ano...

Att.