DateTime - 确定周年纪念日(周年纪念日)

时间:2013-09-06 02:22:12

标签: c# linq datetime

所以我只有一个CreatedDate可以使用。

我有一个计划的任务,每天午夜12点运行,并且需要获取当月同一天的所有记录(但如果CreatedDate == DateTime.Now则不行)。

我更喜欢这个在LINQ中,因为这是一个数据库调用,但我认为任何迭代逻辑都足够了。

我现在有这个,但是天数高于28时会出现问题:

var results = Context.Subscriptions.Where(
                x => !(x.StartDate.Day == DateTime.Now.Day &&
                      x.StartDate.Month == DateTime.Now.Month &&
                      x.StartDate.Year == DateTime.Now.Year) && 
                     x.StartDate.Day == DateTime.Now.Day);

为清晰起见更新问题:

例如,记录的创建日期是2013年1月31日。此记录应每月提取一次。但由于并非所有月份都有31天,因此我的上述代码在这几个月内无效。即使那个月没有第31个月,我仍然需要每个月记录一次。

1 个答案:

答案 0 :(得分:0)

只是想到也许您可以在运行预定任务时使用Windows服务,但在.net中还有另一种任务调度程序方式。如果要使用Windows服务,可以使用timer类来重复运行。 如果你有一个任务表,你可以有intervaldatetime,datelastrundatetime和nextjobdatetime的列。在这里,您可以检查它将运行的时间间隔,并检查要运行的作业/任务的日期时间,或者它不应该运行。

检查以获取更多信息: http://msdn.microsoft.com/en-us/magazine/cc163821.aspx

我希望它可以帮到你。