我有这段代码:
public static DateTime calcMondayDate(DateTime input)
{
int delta = DayOfWeek.Monday - input.DayOfWeek;
DateTime monday = input.AddDays(delta);
return monday;
}
如果星期日是星期的第一天,它可以很好地计算星期一日期。但我希望它计算所以星期一是一周的第一天。因为如果输入2009-11-29,2009-11-30将返回而不是2009-11-23。
如何调整代码?
/ M
答案 0 :(得分:2)
试试这个:
public static DateTime calcMondayDate(DateTime input) {
int delta = (DayOfWeek.Monday - input.DayOfWeek - 7) % 7;
DateTime monday = input.AddDays(delta);
return monday;
}
答案 1 :(得分:0)
假设您想要上一个星期一(或星期一的同一天),那么我认为这应该有效:
public static DateTime calcMondayDate(DateTime input)
{
int delta = (7 - (DayOfWeek.Monday - input.DayOfWeek)) % 7;
return input.AddDays(-delta);
}
答案 2 :(得分:0)
DateTime temp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 7, 0, 0);
starting=temp.AddDays(-(int) temp.AddDays(-1).DayOfWeek );
这对我有用