C # - сколько дней осталось в году от Datetime.Now - PullRequest
4 голосов
/ 20 августа 2011

Я пытаюсь получить количество дней, оставшихся в году, от Datetime.Now.

Имея небольшие проблемы, я попытался использовать datediff без особого успеха.

Не думаю, что кто-то из вас, эксперты, мог бы показать мне, как этого можно достичь в C #?

Я бы хотел, чтобы код возвращал целочисленное значение за оставшиеся дни.

Ответы [ 6 ]

8 голосов
/ 20 августа 2011

Как насчет:

DateTime date = DateTime.Today;
int daysInYear = DateTime.IsLeapYear(date.Year) ? 366 : 365;
int daysLeftInYear = daysInYear - date.DayOfYear; // Result is in range 0-365.

Обратите внимание, что важно оценивать DateTime.Now только один раз , иначе вы можете получить несоответствие, если оно будет выполнено один раз в конце года иодин раз в начале другого.

4 голосов
/ 20 августа 2011
DateTime now = DateTime.Now;
DateTime end = new DateTime(now.Year + 1, 1, 1);
int daysLeftInYear = (int)(end - now).TotalDays;
2 голосов
/ 20 августа 2011

Вне моей головы, вы можете сделать это:

Date someDate = DateTime.Now;
Date nextYear = new DateTime(someDate.Year + 1, 1, 1);
int daysLeft = (nextYear - someDate).Days;

Не проверял, потому что я дома, но я уверен в логике. :)

0 голосов
/ 20 августа 2011

Уже много ответов, которые работают, но еще не видели этот простой

DateTime today = DateTime.Now;
int daysleft = new DateTime(today.Year,12,31).DayOfYear - today.DayOfYear;
0 голосов
/ 20 августа 2011

как то так ...

DateTime EOY = new DateTime(DateTime.Now.Year, 12, 31);
int DaysLeft = EOY.Subtract(DateTime.Now).Days;
0 голосов
/ 20 августа 2011

Как насчет этого:

    public int DaysLeftInYear()
    {
        DateTime today = DateTime.Now;
        int daysInYear = 365;
        if (DateTime.IsLeapYear(today.Year))
        {
            daysInYear++;
        }

        return daysInYear - today.DayOfYear;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...