2009-11-10 100 views
2

好的,所以我需要以編程方式找到本週一的日期。VB.NET中的DateTime問題

例如,本週星期一是9號,所以我需要的日期:09/11/2009

當我們翻轉到下週它需要計算:16/11/2009

我已經嘗試過自己做這件事,但我看不出如何做算術,謝謝。

回答

4

C#:

date.AddDays(1 - (date.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)date.DayOfWeek)); 

VB.NET:

date.AddDays(1 - IIf((date.DayOfWeek = DayOfWeek.Sunday), 7, date.DayOfWeek)) 
+0

不錯的單線。 – cjk 2009-11-10 09:25:05

+0

當我使用它時,我得到了很多語法錯誤,並且當我將它清理到.NET可能接受的時候,我得到這個錯誤:類型'Date'的值不能被轉換爲'Integer' – Gordon 2009-11-10 09:26:58

+0

這是因爲那是C#和不是vb.net – RobS 2009-11-10 09:34:16

1
Dim thisMonday As Date = Now.AddDays((Now.DayOfWeek - 1) * -1).Date 

如果今天是星期天它提供了以下星期一否則,給出了本週一。

1
Return givenDate.AddDays(1 - CType(IIf((givenDate.DayOfWeek = DayOfWeek.Sunday), 7, givenDate.DayOfWeek), Double)) 

如果givenDate是星期天,則返回到前一個星期一。包含一個CType,將IIf結果轉換爲Double,與Option Strict On配合使用。