创建仅包含月和日的日期时间,不包括年份

nov*_*rmr 31 c# datetime

我在VS中为sharepoint创建一个计时器作业,我想创建一个只有月和日的Date对象.原因是因为我希望这份工作每年在特定日期开展.

如果使用日期对象是不可能的,那么你将如何做到这一点呢?

这是我得到的:

DateTime value = new DateTime(2010, 1, 18);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 46

好吧,你可以创建自己的类型 - 但DateTime 总是有一个完整的日期和时间.你甚至不能使用"只是一个约会" DateTime- 你最接近的就是DateTime在午夜时分.

你可以随时忽略这一年 - 或者当前年份:

// Consider whether you want DateTime.UtcNow.Year instead
DateTime value = new DateTime(DateTime.Now.Year, month, day);
Run Code Online (Sandbox Code Playgroud)

要创建自己的类型,您可以始终只DateTime在一个结构中嵌入一​​个,并在诸如此类的调用上代理AddDays:

public struct MonthDay : IEquatable<MonthDay>
{
    private readonly DateTime dateTime;

    public MonthDay(int month, int day)
    {
        dateTime = new DateTime(2000, month, day);
    }

    public MonthDay AddDays(int days)
    {
        DateTime added = dateTime.AddDays(days);
        return new MonthDay(added.Month, added.Day);
    }

    // TODO: Implement interfaces, equality etc
}
Run Code Online (Sandbox Code Playgroud)

请注意,您选择的年份会影响该类型的行为 - 2月29日是否应该是有效的月/日值?这取决于年份......

我个人认为我不会为此创建一个类型 - 相反,我有一个方法可以返回"下次运行程序时".