2015-06-07 58 views
0

我正在嘗試提取本週的日期,我無法找到一個明智的,聰明的方式,而不是長時間的情況下,開關和if語句。 任何人都知道一個相對簡單的方法來提取使用.Net的人? 謝謝!使用.Net提取本週的日期?

+1

顯示您嘗試過什麼以及爲什麼要搜索另一個aproach – Fabio

+0

尚未開始,我有一個每天騎自行車的心理形象,並根據「今日」值添加或減少幾天。我只希望有一個更合理的方法 –

+0

嘗試'DateTime.Now.DayOfWeek',然後根據結果計算同一周的其他日期 – Fabio

回答

3

DateTime.DayOfWeek是一個枚舉,以週日爲0開始並繼續前進。如果你今天是星期幾,它也會告訴我星期天是多少天。因此,假設本週的週日開始於週日,那麼很多日子都會給你。你可以從一週的七天前進。

var today = DateTime.Now; 
var thisSunday = today.AddDays(-(int)today.DayOfWeek); 

for (int i=0; i<7; i++) 
    Console.WriteLine(thisSunday.AddDays(i).ToString()); 

如果本週從週一開始,使用

var thisMonday = today.AddDays(-(((int)today.DayOfWeek + 6) % 7)); 
+0

嗯有趣..我認爲這個解決方案可能會訣竅..非常感謝好友! –

+0

從給定日期和檢查星期編號兩個方向分支出來可能會更好,這樣您將擁有獨立於文化的代碼。並非所有的文化都是在週日開始的。 –

+0

@ LasseV.Karlsen是的,這就是爲什麼我從星期一開始添加一個數周的原因。如果需要,它也可以很容易地修改爲從所需的工作日開始。 –

0

你可以使用擴展方法來設置日那一週開始用(credit goes to @Compile This

public static class DateTimeExtensions 
{ 
    public static DateTime StartOfWeek(this DateTime datetime, DayOfWeek startOfWeek) 
    { 
     int difference = datetime.DayOfWeek - startOfWeek; 
     if (difference >= 0) 
      return datetime.AddDays(-1 * difference).Date; 
     difference += 7; 
     return datetime.AddDays(-1 * difference).Date; 
    } 
} 

然後你就可以獲取日期使用與@Sami_Kuhmonen相同的循環提到:

 DateTime d = DateTime.Now.StartOfWeek(DayOfWeek.Saturday); 
     for (int i = 0; i < 7; i++) 
      Console.WriteLine(d.AddDays(i));