C# - 从Datetime.Now开始还有多少天

时间:2011-08-19 23:25:40

标签: c# datetime

我正试图从Datetime.Now获得一年内剩余的天数。

遇到一点麻烦,我尝试使用datediff但没有取得多大成功。

我不认为你们中的一位专家可能会告诉我如何在C#中实现这一目标?

我想要一个代码来返回剩余天数的整数值。

8 个答案:

答案 0 :(得分:8)

怎么样:

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 一次非常重要,否则如果在一年结束时评估一次,而在另一年开始评估一次,则可能会出现不一致。

答案 1 :(得分:4)

DateTime now = DateTime.Now;
DateTime end = new DateTime(now.Year + 1, 1, 1);
int daysLeftInYear = (int)(end - now).TotalDays;

答案 2 :(得分:2)

在我的头顶,你可以这样做:

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

没有经过测试,因为我在家,但我非常确定逻辑。 :)

答案 3 :(得分:0)

这个怎么样:

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

        return daysInYear - today.DayOfYear;
    }

答案 4 :(得分:0)

像这样......

DateTime EOY = new DateTime(DateTime.Now.Year, 12, 31);
int DaysLeft = EOY.Subtract(DateTime.Now).Days;

答案 5 :(得分:0)

假设您的日期(endDate)较大,并且您想知道有多少天,

int days = endDate.Subtract(startDate).Days;

答案 6 :(得分:0)

基于最高投票答案的一个班轮:

DateTime.IsLeapYear(DateTime.Today.Year) ? 366 - DateTime.Today.DayOfYear : 365 - DateTime.Today.DayOfYear

答案 7 :(得分:-1)

已经有很多有效的答案,但还没有看到这个简单的答案

DateTime today = DateTime.Now;
int daysleft = new DateTime(today.Year,12,31).DayOfYear - today.DayOfYear;