2012-10-20 1 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; while (firstDayInWeek.DayOfWeek! = firstDay) firstDayInWeek = firstDayInWeek.AddDays (-1); – Hitesh

답변

0

따라서 버튼 클릭시 1 주일이 소요됩니다. 그것이 시작 날짜에 의해 정의됩니다. DateTime 구조체에는 DayOfWeek.Sunday와 같은 열거 형을 반환하는 DayOfWeek 속성이 있습니다. 그래서 여기에 도움이 될 코드 조각이 있습니다 :

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);