2012-10-20 25 views
-2

我有兩個標籤第一天和最後一天,我想通過按鈕單擊來更新它。需要函數獲取當週的第一天和最後一天

我需要函數來獲取當前日期的第一天和最後一天,以便我可以在點擊下一個和上一個按鈕時顯示它。

這是我到目前爲止有:

CultureInfo cultureInfo = CultureInfo.CurrentCulture; 
DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek; 
firstDayInWeek = dayInWeek.Date; 
lastDayInWeek = dayInWeek.Date; 
while (firstDayInWeek.DayOfWeek != firstDay) 
    firstDayInWeek = firstDayInWeek.AddDays(-1); 

,但不給我下週這個月之後。

這到底是什麼我要找:

任何一個可以幫助這個工作使用單一功能進行。

+5

一週中的幾天做你認爲是第一個和最後一個? (不同的文化會在不同的環境中做不同的事情。) –

+0

你有什麼嘗試?獲取當前星期幾,然後減去並添加今天到第一天/最後一天之間的天數。例如。如果今天是星期二,則減去2到週日,並加4到週六。 – Barmar

+0

我已使用此 CultureInfo cultureInfo = CultureInfo.CurrentCulture; DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek; firstDayInWeek = dayInWeek.Date; lastDayInWeek = dayInWeek.Date; (firstDayInWeek.DayOfWeek!= firstDay) firstDayInWeek = firstDayInWeek.AddDays(-1); 但本月後的下週不會給我 – Hitesh

回答

0

所以,點擊一個按鈕後,你有一個星期的時間。可以說這是由開始日期定義的。 DateTime結構有一個屬性DayOfWeek,它返回一個類似DayOfWeek.Sunday的枚舉。因此,這裏是一個代碼片段,可以幫助:

var startOfWeek = DateTime(xx, yy ...); // defined by your business code 

var firstDayOfWeek = startOfWeek.DayOfWeek; 
var lastDayOfWeek = firstDayOfWeek.AddDays(6).DayOfWeek; 

我還沒有編譯的代碼,直接把我的頭,所以希望這是好的。

+0

我搶我編輯了我的問題與屏幕。這就是我正在尋找完成我的功能。你能幫我解決嗎? – Hitesh

6

試試這個:

private static void GetWeek(DateTime now, CultureInfo cultureInfo, out DateTime begining, out DateTime end) 
{ 
    if (now == null) 
     throw new ArgumentNullException("now"); 
    if (cultureInfo == null) 
     throw new ArgumentNullException("cultureInfo"); 

    var firstDayOfWeek = cultureInfo.DateTimeFormat.FirstDayOfWeek; 

    int offset = firstDayOfWeek - now.DayOfWeek; 
    if (offset != 1) 
    { 
     DateTime weekStart = now.AddDays(offset); 
     DateTime endOfWeek = weekStart.AddDays(6); 
     begining = weekStart; 
     end = endOfWeek; 
    } 
    else 
    { 
     begining = now.AddDays(-6); 
     end = now; 
    } 
} 

用例:

DateTime begining; 
DateTime end; 

var testDate = new DateTime(2012, 10, 10); 
GetWeek(testDate, new CultureInfo("fr-FR"), out begining, out end); 
Console.WriteLine("Week {0} - {1}", 
        begining.ToShortDateString(), 
        end.ToShortDateString()); // will output Week 10/8/2012 - 10/14/2012 
3
DateTime baseDate = DateTime.Now; 
var thisWeekStart = baseDate.AddDays(-(int)baseDate.DayOfWeek); 
var thisWeekEnd = thisWeekStart.AddDays(7).AddSeconds(-1); 
相關問題