没有DayOfYear功能获得一年中的一天?

时间:2012-03-01 18:20:33

标签: c# datetime datetimepicker

我希望在不使用内置的DayOfYear函数的情况下获得当年的当天(2月02日为33等)。 当前日期很快将更改为DateTime选择器。 任何回应都非常感谢。

3 个答案:

答案 0 :(得分:4)

因为我拒绝相信有充分的理由不使用DateTime.Now.DayOfYear,并且对于那些在寻找计算日期的正确方法时可能会得出这个问题的人,我的答案是:

int dayOfYear = DateTime.Now.DayOfYear;

答案 1 :(得分:3)

你可以用硬编码的“月初”值(1,32,60,90,121等)来自己计算,如果你处于闰年而且月份是3月,则加1或者更晚......但为什么不使用内置属性?

或者,Noda Time不使用DateTime.DayOfYear:)

// Ideally, use an injected IClock for testability...
var now = SystemClock.SystemNow.InZone(DateTimeZone.SystemDefault);
var dayOfYear = now.DayOfYear;

(请注意,这会使用系统时区,如果您正在向不同时区的用户投放网页,这可能不合适。请仔细考虑一下。)

答案 2 :(得分:0)

您可以自己计算:

protected int GetJulianDate(System.DateTime dDate)
{
    // CREATE THE JULIAN DATE FROM THE PROVIDED DATE
    //   dDate - THE DATE TO BE CONVERTED
    DateTime firstDay = DateTime.Parse("01/01/" + dDate.Year);
    TimeSpan ts = dDate.Subtract(firstDay);
    return ts.Days + 1;
}