Pergunta

Eu estou tentando calcular a diferença entre duas datas. Isto é o que eu estou usando atualmente:

int currentyear = DateTime.Now.Year;

DateTime now = DateTime.Now;
DateTime then = new DateTime(currentyear, 12, 26);
TimeSpan diff = now - then;
int days = diff.Days;
label1.Text = days.ToString() + " Days Until Christmas";

Tudo funciona bem, exceto que é um dia de folga. Estou assumindo isso é porque ele não conta nada menos do que 24 horas por dia completo. Existe uma maneira de obtê-lo a fazê-lo? Obrigado.

Foi útil?

Solução

int days = (int)Math.Ceiling(diff.TotalDays);

Outras dicas

A questão é bastante filosófica; se o Natal fosse amanhã, você consideraria que seja um dia à esquerda, ou 0 dias esquerda. Se você colocar o dia de amanhã em seu cálculo, a resposta será 0.

Seu problema desaparece se você substituir o seu:

DateTime.Now

com:

DateTime.Today

como seu cálculo da diferença será, então, trabalhar em dias inteiros.

Normalmente eu uso o seguinte código para obter a saída como pretendido pela unidade em que é necessária a saída:

        DateTime[] dd = new DateTime[] { new DateTime(2014, 01, 10, 10, 15, 01),new DateTime(2014, 01, 10, 10, 10, 10) };

        int x = Convert.ToInt32((dd[0] - dd[1]).TotalMinutes);

        String unit = "days";

        if (x / 60 == 0)
        {
            unit = "minutes";
        }

        else if (x / 60 / 24 == 0)
        {
            unit = "hours";
            x = x / 60;
        }

        else
        {
            x = x / (60 * 24);
        }

        Console.WriteLine(x + " " + unit);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top