Estava migrando um sistema de cálculos previdenciários desenvolvido em ASP clássico para ASP.NET e C# como codebehind.
Um dos cálculos utilizava a função dateDiff do ASP que retorna a diferença entre duas datas, em dias, meses ou anos.
Pesquisei na internet e descobri que o VB.NET possui essa função, porém o C# não.
Então encontrei algumas funções na internet e adaptei as minhas necessidades e vou compartilhar com vocês.
/**
* DateDiff para C#
* Indica qual será o retorno [d = Dias, m = Meses, y = Anos]
* Data Inicial
* Data Final
* Retorna a diferença de acordo com o Intervalo escolhido
*/
public int dateDiff(char charInterval, DateTime dttFromDate, DateTime dttToDate)
{
TimeSpan tsDuration;
tsDuration = dttToDate - dttFromDate;
if (charInterval == 'd')
{
// Resultado em Dias
return tsDuration.Days;
}
else if (charInterval == 'm')
{
// Resultado em Meses
double dblValue = 12 * (dttFromDate.Year - dttToDate.Year) + dttFromDate.Month - dttToDate.Month;
return Convert.ToInt32(Math.Abs(dblValue));
}
else if (charInterval == 'y')
{
// Resultado em Anos
return Convert.ToInt32((tsDuration.Days) / 365);
}
else
{
return 0;
}
}