0

ボタンのクリックで更新したい初日と最終日の2つのラベルがあります。

次と前のボタンをクリックして表示できるように、現在の日付の最初の日と最後の日を取得する関数が必要です。

これが私がこれまでに持っているものです:

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

しかし、今月の翌週はくれません。

これはまさに私が探しているものです:

誰でも、単一の関数を使用してこれを機能させることができます。

4

3 に答える 3

7

これを試して :

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
于 2012-10-25T09:38:25.063 に答える
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;

私はこのコードをコンパイルしていません。

于 2012-10-20T07:02:29.260 に答える