2009-11-24 198 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); 

這適用於我

相關問題