我们如何获得每月(每周的一天)用于备份

时间:2019-04-19 11:53:29

标签: c# datetime

我想使用每月(星期几)进行一次计划备份的下一个备份日期。

如果我在2019年1月的第二个星期星期一进行了备份,那么下一个备份日期应该是在2019年2月的第二个星期的星期一。

那么,如何获得下个月每个给定星期的特定日期?

现在我要获得下一个备份月份,但是我不确定在特定的一周中如何获得同一天。

2 个答案:

答案 0 :(得分:0)

您应该为DateTime类创建扩展方法。

public static DateTime NthOf(this DateTime CurDate, int Occurrence , DayOfWeek Day)
 {
     var fday = new DateTime(CurDate.Year, CurDate.Month, 1);

     var fOc = fday.DayOfWeek == Day ? fday : fday.AddDays(Day - fday.DayOfWeek);

     if (fOc.Month < CurDate.Month) Occurrence = Occurrence+1;
     return fOc.AddDays(7 * (Occurrence - 1));
 }

并使用

new DateTime().NthOf(2, DayOfWeek.Monday))

引用:How to calculate 2nd Friday of Month in C#

答案 1 :(得分:0)

您为什么不获得DayOfTheYear,而只需添加7。像这样:

 var dateTime = DateTime.Now;
 var dayOfYear = dateTime.DayOfYear;
 var nextDate = dateTime.AddDays(dayOfYear + 7);
 Console.WriteLine(nextDate);

由于下一个备份日是同一天,这意味着只需将其添加7。在这种情况下,您将不得不管理一年的最后一周