CalendarWeekRule 列挙型

定義

年の最初の週を決定するためのさまざまな規則を定義します。

public enum class CalendarWeekRule
public enum CalendarWeekRule
[System.Serializable]
public enum CalendarWeekRule
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CalendarWeekRule
type CalendarWeekRule = 
[<System.Serializable>]
type CalendarWeekRule = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type CalendarWeekRule = 
Public Enum CalendarWeekRule
継承
CalendarWeekRule
属性

フィールド

FirstDay 0

1 年の最初の週が、その年の第 1 日に始まり、週の最初の曜日として指定されている曜日が次に訪れるのを待たずに終了することを示します。 値は 0 です。

FirstFourDayWeek 2

1 年の最初の週が、週の最初の曜日として指定されている曜日が次に訪れるまでに 4 日以上かかる週になるように指定します。 値は 2 です。

FirstFullWeek 1

1 年の最初の週が、その年の第 1 日目またはその後に訪れる、週の最初の曜日として指定されている曜日に始まることを示します。 値は 1 です。

注釈

列挙体の CalendarWeekRule メンバーは、 プロパティによって DateTimeFormatInfo.CalendarWeekRule 返され、カルチャの現在のカレンダーでカレンダーの週ルールを決定するために使用されます。 列挙値は、 メソッドのパラメーター Calendar.GetWeekOfYear としても使用されます。

カレンダー週ルールは、 System.DayOfWeek 値に応じて、週の最初の日を示す値に加えて、値によって CalendarWeekRule 異なります。 プロパティはDateTimeFormatInfo.FirstDayOfWeekカルチャの既定値を提供しますが、 メソッドではCalendar.GetWeekOfYear任意DayOfWeekの値を週の最初の曜日として指定できます。

値に基づく最初の FirstDay 週には、1 日から 7 日を指定できます。 値に基づく最初の FirstFullWeek 週は常に 7 日間です。 値に基づく最初の FirstFourDayWeek 週には、4 日から 7 日を指定できます。

たとえば、グレゴリオ暦では、年の最初の日 (1 月 1 日) が火曜日に当たり、指定された週の最初の日が日曜日であるとします。 を選択すると FirstFullWeek 、最初の日曜日 (1 月 6 日) が年の最初の週の始まりとして定義されます。 年の最初の 5 日間は、前年の最後の週の一部と見なされます。 これに対し、 を選択すると FirstFourDayWeek 、1 月 1 日から次の日曜日の前日まで 4 日を超えるので、年の最初の曜日 (1 月 1 日) が年の最初の週の始まりとして定義されます。

Date FirstDay FirstFullWeek FirstFourDayWeek
12 月 31 日 (月) 前年の先週 前年の先週 前年の先週
1 月 1 日 (火) 第 1 週 前年の先週 第 1 週
1 月 2 日 (水) 第 1 週 前年の先週 第 1 週
1 月 3 日 (木) 第 1 週 前年の先週 第 1 週
1 月 4 日 (金) 第 1 週 前年の先週 第 1 週
1 月 5 日 (土) 第 1 週 前年の先週 第 1 週
1月6日(日) 第 2 週 第 1 週 第 2 週
1 月 7 日 (月) 第 2 週 第 1 週 第 2 週
1 月 8 日 (火) 第 2 週 第 1 週 第 2 週
1 月 9 日 (水) 第 2 週 第 1 週 第 2 週
1 月 10 日 (木) 第 2 週 第 1 週 第 2 週
1 月 11 日 (金) 第 2 週 第 1 週 第 2 週
1 月 12 日 (土) 第 2 週 第 1 週 第 2 週

年の最初の日 (1 月 1 日) が金曜日に当たり、週の指定された最初の日が日曜日であるとします。 を選択すると FirstFourDayWeek 、1 月 1 日から次の日曜日の前日までの 4 日未満であるため、最初の日曜日 (1 月 3 日) が年の最初の週の始まりとして定義されます。

Date FirstDay FirstFullWeek FirstFourDayWeek
12月31日(木) 前年の最後の週 前年の最後の週 前年の最後の週
1 月 1 日 (金) 第 1 週 前年の最後の週 前年の最後の週
1 月 2 日 (土) 第 1 週 前年の最後の週 前年の最後の週
1月3日(日) 第 2 週 第 1 週 第 1 週
1 月 4 日 (月) 第 2 週 第 1 週 第 1 週
1 月 5 日 (火) 第 2 週 第 1 週 第 1 週
1 月 6 日 (水) 第 2 週 第 1 週 第 1 週
1 月 7 日 (木) 第 2 週 第 1 週 第 1 週
1 月 8 日 (金) 第 2 週 第 1 週 第 1 週
1 月 9 日 (土) 第 2 週 第 1 週 第 1 週

次の例では、 と DayOfWeek の値をCalendarWeekRule組み合わせて使用して、週の割り当て方法を決定する方法を示します。 グレゴリオ暦では、2013 年の年の最初の日 (1 月 1 日) が火曜日に当たります。 指定された週の最初の日が日曜日の場合、最初の日曜日 (1 月 6 日) は年の最初の週の最初の日であり、土曜日 (1 月 5 日) は前年の第 50 週に属します。 カレンダー週ルールを に FirstFourDayWeek 変更すると、火曜日 (1 月 1 日) が年の最初の週の初めとして定義されます。これは、火曜日、1 月 1 日、1 月 6 日 (日曜日) の間に 4 日以上があるためです。 このルールを使用すると、1 月 5 日は年の最初の週に属します。 2010 年の場合、1 月 1 日が金曜日に当たる年で、週の最初の日として を使用してルールDayOfWeek.SundayFirstFourDayWeek適用すると、2010 年の最初の週が 1 月 3 日から 9 日を超えるため、1 月 3 日は年の最初の週の始まりになります。

using System;
using System.Globalization;

public class Example
{
   static Calendar cal = new GregorianCalendar();

   public static void Main()
   {
      DateTime date = new DateTime(2013, 1, 5);
      DayOfWeek firstDay = DayOfWeek.Sunday;
      CalendarWeekRule rule;

      rule = CalendarWeekRule.FirstFullWeek;
      ShowWeekNumber(date, rule, firstDay);

      rule = CalendarWeekRule.FirstFourDayWeek;
      ShowWeekNumber(date, rule, firstDay);

      Console.WriteLine();
      date = new DateTime(2010, 1, 3);
      ShowWeekNumber(date, rule, firstDay);
   }

   private static void ShowWeekNumber(DateTime dat, CalendarWeekRule rule,
                                      DayOfWeek firstDay)
   {
      Console.WriteLine("{0:d} with {1:F} rule and {2:F} as first day of week: week {3}",
                        dat, rule, firstDay, cal.GetWeekOfYear(dat, rule, firstDay));
   }
}
// The example displays the following output:
//       1/5/2013 with FirstFullWeek rule and Sunday as first day of week: week 53
//       1/5/2013 with FirstFourDayWeek rule and Sunday as first day of week: week 1
//
//       1/3/2010 with FirstFourDayWeek rule and Sunday as first day of week: week 1
Imports System.Globalization

Module Example
   
   Dim cal As New GregorianCalendar()
   
   Public Sub Main()
      Dim dat As Date = #01/05/2013#
      Dim firstDay As DayOfWeek = DayOfWeek.Sunday
      Dim rule As CalendarWeekRule
      
      rule = CalendarWeekRule.FirstFullWeek
      ShowWeekNumber(dat, rule, firstDay)
      
      rule = CalendarWeekRule.FirstFourDayWeek
      ShowWeekNumber(dat, rule, firstDay)

      Console.WriteLine()
      dat = #1/03/2010#
      ShowWeekNumber(dat, rule, firstDay)
   End Sub
   
   Private Sub ShowWeekNumber(dat As Date, rule As CalendarWeekRule, 
                              firstDay As DayOfWeek)
      Console.WriteLine("{0:d} with {1:F} rule and {2:F} as first day of week: week {3}",
                        dat, rule, firstDay, cal.GetWeekOfYear(dat, rule, firstDay))
   End Sub   
End Module
' The example displays the following output:
'       1/5/2013 with FirstFullWeek rule and Sunday as first day of week: week 53
'       1/5/2013 with FirstFourDayWeek rule and Sunday as first day of week: week 1
'       
'       1/3/2010 with FirstFourDayWeek rule and Sunday as first day of week: week 1

注意

これは ISO 8601 に正確にはマップされません。 違いについては、 Microsoft .NET のブログ エントリ ISO 8601 Week of Year 形式で説明されています。 .NET Core 3.0 以降では、 ISOWeek.GetYear この問題を解決します ISOWeek.GetWeekOfYear

CultureInfo オブジェクトは、カレンダーのセットをサポートしています。 Calendar プロパティは、カルチャの既定のカレンダーを返し、OptionalCalendars プロパティは、カルチャでサポートされているすべてのカレンダーを含む配列を返します。 によって使用される予定表をCultureInfo変更するには、 の CultureInfo.DateTimeFormat プロパティをCalendarCalendarしい に設定します。

適用対象

こちらもご覧ください