C # - Разница между двумя датами? - PullRequest
7 голосов
/ 03 декабря 2009

Я пытаюсь вычислить разницу между двумя датами. Вот что я сейчас использую:

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

Все отлично работает, кроме выходного дня. Я предполагаю, что это потому, что он не учитывает ничего меньше 24 часов в день. Есть ли способ заставить это сделать это? Спасибо.

Ответы [ 4 ]

12 голосов
/ 03 декабря 2009
int days = (int)Math.Ceiling(diff.TotalDays);
1 голос
/ 03 декабря 2009

Ваша проблема исчезнет, ​​если вы замените:

DateTime.Now

с:

DateTime.Today

, так как ваш расчет разницы будет работать целыми днями.

1 голос
/ 03 декабря 2009

Вопрос довольно философский; если бы завтра было Рождество, вы бы посчитали, что осталось 1 день или 0 дней. Если вы включите завтрашний день в свой расчет, ответ будет 0.

0 голосов
/ 15 апреля 2014

Я обычно использую следующий код, чтобы получить выходные данные, как предполагалось единицей, в которой требуется вывод:

        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);
...