2009-11-24 157 views
0

我有这样一段代码:计算日期星期一作为星期几= 1

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

回答

2

试试这个:

public static DateTime calcMondayDate(DateTime input) { 
    int delta = (DayOfWeek.Monday - input.DayOfWeek - 7) % 7; 
    DateTime monday = input.AddDays(delta); 
    return monday; 
} 
0

假设你想使用上周一(或同一天,如果一个星期一),那么我认为这应该工作:

public static DateTime calcMondayDate(DateTime input) 
{ 
    int delta = (7 - (DayOfWeek.Monday - input.DayOfWeek)) % 7; 
    return input.AddDays(-delta); 
} 
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); 

这适用于我

相关问题