我正在 VS 中为共享点创建一个计时器作业,我想创建一个只有月份和日期的日期对象。这样做的原因是因为我希望这项工作每年在特定日期运行。
如果无法使用日期对象,那么您会怎么做呢?
这是我得到的:
DateTime value = new DateTime(2010, 1, 18);
最佳答案
好吧,您可以创建自己的类型 - 但 DateTime
始终 具有完整的日期和时间。您甚至不能使用 DateTime
“只是一个约会” - 您最接近的是在午夜有一个 DateTime
。
尽管如此,您始终可以忽略年份 - 或者采用当前年份:
// Consider whether you want DateTime.UtcNow.Year instead
DateTime value = new DateTime(DateTime.Now.Year, month, day);
要创建自己的类型,您总是可以在结构中嵌入 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
}
请注意,您选择的年份会影响类型的行为 - Feb 29th 是否应该是有效的月/日值?这取决于年份......
就我个人而言,我不认为我会为此创建一个类型 - 相反,我会有一个方法来返回“下次应该运行该程序”。
关于c# - 创建一个只有月和日的日期时间,没有年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958879/