CalendarWeekRule Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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.