CalendarWeekRule Enumeración

Definición

Define reglas diferentes para determinar la primera semana del año.

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
Herencia
CalendarWeekRule
Atributos

Campos

FirstDay 0

Indica que la primera semana del año se inicia el primer día del año y termina antes del primer día de la semana siguiente designado. El valor es 0.

FirstFourDayWeek 2

Indica que la primera semana del año es la primera semana con cuatro o más días antes del primer día de la semana designado. El valor es 2.

FirstFullWeek 1

Indica que la primera semana del año comienza en la primera aparición del primer día de la semana designado correspondiente al primer día del año o después de ese día. El valor es 1.

Comentarios

La propiedad devuelve un miembro de la CalendarWeekRuleDateTimeFormatInfo.CalendarWeekRule enumeración y lo usa el calendario actual de la referencia cultural para determinar la regla de semana natural. El valor de enumeración también se usa como parámetro para el Calendar.GetWeekOfYear método .

Las reglas de semana del calendario dependen del System.DayOfWeek valor que indica el primer día de la semana además de según un CalendarWeekRule valor. La DateTimeFormatInfo.FirstDayOfWeek propiedad proporciona el valor predeterminado para una referencia cultural, pero cualquier DayOfWeek valor se puede especificar como el primer día de la semana en el Calendar.GetWeekOfYear método .

La primera semana basada en el FirstDay valor puede tener de uno a siete días. La primera semana basada en el FirstFullWeek valor siempre tiene siete días. La primera semana basada en el FirstFourDayWeek valor puede tener cuatro a siete días.

Por ejemplo, en el calendario gregoriano, supongamos que el primer día del año (1 de enero) cae en un martes y el primer día designado de la semana es domingo. FirstFullWeek Al seleccionar se define el primer domingo (6 de enero) como principio de la primera semana del año. Los primeros cinco días del año se consideran parte de la última semana del año anterior. En cambio, la FirstFourDayWeek selección define el primer día del año (1 de enero) como el comienzo de la primera semana del año porque hay más de cuatro días del 1 de enero al día anterior al domingo siguiente.

Date FirstDay FirstFullWeek FirstFourDayWeek
31 de dic Última semana del año anterior Última semana del año anterior Última semana del año anterior
1 tue de enero Semana 1 Última semana del año anterior Semana 1
2 ene Wed Semana 1 Última semana del año anterior Semana 1
3 de enero de Thu Semana 1 Última semana del año anterior Semana 1
4 de enero Semana 1 Última semana del año anterior Semana 1
5 de enero sáb Semana 1 Última semana del año anterior Semana 1
6 de enero Semana 2 Semana 1 Semana 2
7 de enero Semana 2 Semana 1 Semana 2
8 tue de enero Semana 2 Semana 1 Semana 2
9 de enero Wed Semana 2 Semana 1 Semana 2
10 de enero de Thu Semana 2 Semana 1 Semana 2
11 de enero Semana 2 Semana 1 Semana 2
12 de enero Semana 2 Semana 1 Semana 2

Supongamos que el primer día del año (1 de enero) cae el viernes y el primer día designado de la semana es domingo. FirstFourDayWeek Al seleccionar se define el primer domingo (3 de enero) como comienzo de la primera semana del año porque hay menos de cuatro días del 1 de enero al día anterior al domingo siguiente.

Date FirstDay FirstFullWeek FirstFourDayWeek
31 de dic Thu Última semana del año anterior Última semana del año anterior Última semana del año anterior
1 de enero de 1 viernes Semana 1 Última semana del año anterior Última semana del año anterior
2 de enero Semana 1 Última semana del año anterior Última semana del año anterior
3 de enero Semana 2 Semana 1 Semana 1
4 de enero Semana 2 Semana 1 Semana 1
5 tue de enero Semana 2 Semana 1 Semana 1
6 ene Wed Semana 2 Semana 1 Semana 1
7 de enero de Thu Semana 2 Semana 1 Semana 1
8 de enero Semana 2 Semana 1 Semana 1
9 de enero Semana 2 Semana 1 Semana 1

En el ejemplo siguiente se muestra cómo se usan los CalendarWeekRule valores y DayOfWeek juntos para determinar cómo se asignan las semanas. En el calendario gregoriano, el primer día del año (1 de enero) en 2013 cae el martes. Si el primer día designado de la semana es domingo, el primer domingo (6 de enero) es el primer día de la primera semana del año y el sábado (5 de enero) pertenece a la cincuenta tercera semana del año anterior. Al cambiar la regla de semana del calendario para FirstFourDayWeek definir martes (1 de enero) como comienzo de la primera semana del año, porque hay más de cuatro días entre el martes, el 1 de enero y el domingo 6 de enero. Con esta regla, el 5 de enero pertenece a la primera semana del año. Para 2010, un año en el que el 1 de enero cae el viernes, aplicando la FirstFourDayWeek regla con DayOfWeek.Sunday como el primer día de la semana hace domingo, enero 3 el comienzo de la primera semana del año, porque la primera semana de 2010 que tiene más de cuatro días es del 3 al 9 de enero.

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

Nota

Esto no se asigna exactamente a ISO 8601. Las diferencias se describen en la entrada de blog ISO 8601 Week of Year formato en Microsoft .NET. A partir de .NET Core 3.0 ISOWeek.GetYear y ISOWeek.GetWeekOfYear solucione este problema.

Cada CultureInfo objeto admite un conjunto de calendarios. La Calendar propiedad devuelve el calendario predeterminado para la referencia cultural y la OptionalCalendars propiedad devuelve una matriz que contiene todos los calendarios admitidos por la referencia cultural. Para cambiar el calendario usado por , CultureInfoestablezca la Calendar propiedad de CultureInfo.DateTimeFormat en un nuevo Calendar.

Se aplica a

Consulte también