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 日) は前年の第 53 週に属します。 カレンダー週ルールを に FirstFourDayWeek 変更すると、火曜日 (1 月 1 日) が年の最初の週の初めとして定義されます。これは、火曜日、1 月 1 日、1 月 6 日 (日曜日) の間に 4 日を超える日があるためです。 このルールを使用すると、1 月 5 日はその年の最初の週に属します。 2010 年の場合、1 月 1 日が金曜日に当たる年は、2010 年の最初の週が 1 月 3 日から 9 日を超える 1 月 3 日であるため、週の最初の日として を使用して規則DayOfWeek.Sundayを適用FirstFourDayWeekします。

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

Note

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

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

適用対象

こちらもご覧ください