Question

Je suis en train de calculer la différence entre deux dates. Voilà ce que je suis actuellement en utilisant:

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";

Tout fonctionne très bien, sauf qu'il est un jour de congé. Je suppose que c'est parce qu'il ne compte rien de moins de 24 heures par jour complète. Est-il possible de le faire pour le faire? Merci.

Était-ce utile?

La solution

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

Autres conseils

La question est plutôt philosophique; si Noël était demain, seriez-vous le considérez comme reste 1 jour, ou 0 jours à gauche. Si vous mettez le jour de demain dans votre calcul, la réponse sera 0.

Votre problème disparaît si vous remplacez votre:

DateTime.Now

avec:

DateTime.Today

comme calcul de différence sera alors travailler dans des jours entiers.

J'utilise normalement le code suivant pour obtenir la sortie comme prévu par l'unité dans laquelle la sortie est nécessaire:

        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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top