我需要找到一種方法來查找我們所在星期一的星期一的日期(DD/MM/YYYY)。使用VB.NET查找星期一的日期
例如,本週,星期一將是09/11/2009,如果這是下週,它將是16/11/2009。
我設法得到代碼形式的地方,但我得到的是'不能轉換爲整數'的錯誤。我使用Date.Today和AddDays()。
感謝您的任何幫助。 :)
我需要找到一種方法來查找我們所在星期一的星期一的日期(DD/MM/YYYY)。使用VB.NET查找星期一的日期
例如,本週,星期一將是09/11/2009,如果這是下週,它將是16/11/2009。
我設法得到代碼形式的地方,但我得到的是'不能轉換爲整數'的錯誤。我使用Date.Today和AddDays()。
感謝您的任何幫助。 :)
DateTime.DayOfWeek是一個枚舉,指示給定日期的某一天。
Dim monday As DateTime = Today.AddDays((Today.DayOfWeek - DayOfWeek.Monday) * -1)
=Format(DateAdd("d", (-1 * WeekDay(Date.Today()) + 2), Date.Today()), "dd/MM/yyyy")
如果週日是一週的第一天,你可以簡單地這樣做:
Dim today As Date = Date.Today
Dim dayDiff As Integer = today.DayOfWeek - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
由於週一是1,你可以用下面的代碼中找到當前周的星期一
如果星期一是一週的第一天:
Dim today As Date = Date.Today
Dim dayIndex As Integer = today.DayOfWeek
If dayIndex < DayOfWeek.Monday Then
dayIndex += 7 'Monday is first day of week, no day of week should have a smaller index
End If
Dim dayDiff As Integer = dayIndex - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
完美地工作,歡呼。 :) – Willis 2009-11-10 20:06:36
您可以將我的答案設置爲接受,然後:-)另外,如果您想對我們發表評論(如您的感謝信息),您應該爲您的問題添加評論或編輯您的問題,而不是添加答案。另外,歡迎在堆棧溢出! – 2009-11-10 20:31:55
如果今天是星期日,這實際上工作嗎?當我嘗試它時,我得到**下面的星期一的日期,而不是上一個星期一。 – 2012-05-07 01:48:11
一個簡單的方法應該得到你想要的東西:
private static DateTime GetMondayForWeek(DateTime inputDate)
{
int daysFromMonday = inputDate.DayOfWeek - DayOfWeek.Monday;
return inputDate.AddDays(-daysFromMonday);
}
您還可以擴展它,你想和任何一天:
private static DateTime GetDayForWeek(DateTime inputDate, DayOfWeek inputDay)
{
int daysAway = inputDate.DayOfWeek - inputDay;
return inputDate.AddDays(-daysAway);
}
調用第一個例子,是使用類似:
DateTime mondayDate = GetMondayForWeek(new DateTime(2009, 11, 15));
Console.WriteLine(mondayDate);
給C#喂這個新人? (見標籤) – 2009-11-10 19:47:17
Ahhhh,沒有看到VB標籤。我通常提出問題,而不是回答他們對整個回答的場景有點新意。不幸的是,我的機器上甚至沒有VB。 – 2009-11-10 19:52:41
有一週中的一天可以使用的方法
Dim instance As DateTime
Dim value As DayOfWeek
value = instance.DayOfWeek
請參閱:http://msdn.microsoft.com/en-us/library/system.datetime.dayofweek.aspx
我只是在我正在進行的一個項目中做到這一點 - 我保證,這是正確的。這是返回給定日期後第n個星期一的方法。如果給定的日期是星期一,它將返回下一個星期一。
Public Function GetSubsequentMonday(ByVal startDate As DateTime, ByVal subsequentWeeks As Integer) As DateTime
Dim dayOfWeek As Integer = CInt(startDate.DayOfWeek)
Dim daysUntilMonday As Integer = (Math.Sign(dayOfWeek) * (7 - dayOfWeek)) + 1
'number of days until the next Monday
Return startDate.AddDays(CDbl((daysUntilMonday + (7 * (subsequentWeeks - 1)))))
End Function
從我的意見元騎士的回答繼,這裏是一個簡短的功能,使我在評論中提到的修正:
Public Function GetFirstOfLastWeek() As DateTime
Dim today As DateTime, daysSinceMonday As Integer
today = DateTime.Today
daysSinceMonday = today.DayOfWeek - DayOfWeek.Monday
If daysSinceMonday < 0 Then
daysSinceMonday += 7
End If
Return today.AddDays(-daysSinceMonday)
End Function
如果你每週從週一開始,那麼你可以使用這樣的事情:
DateTime mondayDate = DateTime.Now.AddDays(((DateTime.Now.DayOfWeek == DayOfWeek.Sunday?7: (int)DateTime.Now.DayOfWeek) - 1)*-1);
DateTime sundayDate = DateTime.Now.AddDays(7 - (DateTime.Now.DayOfWeek == DayOfWeek.Sunday?7: (int)DateTime.Now.DayOfWeek));
另一種方法,如果週一是第一天,是這樣的:
Dim today As Date = Date.Today
Dim dayDiff As Integer = today.DayOfWeek - DayOfWeek.Monday
Dim monday As Date = today.AddDays(-dayDiff)
dayDiff = DayOfWeek.Saturday - today.DayOfWeek + 1
Dim sunday As Date = today.AddDays(dayDiff)
同樣的問題作爲http://stackoverflow.com/questions/1706589/datetime-question-in-vb-net ?? – 2009-11-10 20:04:58
接受答案。 – 2011-12-09 21:40:42