CalendarWeekRule Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define regras diferentes para determinar a primeira semana do ano.
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
- Herança
- Atributos
Campos
FirstDay | 0 | Indica que a primeira semana do ano começa no primeiro dia do ano e termina antes do primeiro dia designado seguinte da semana. O valor é 0. |
FirstFourDayWeek | 2 | Indica que a primeira semana do ano é a primeira semana com quatro ou mais dias antes do primeiro dia designado da semana. O valor é 2. |
FirstFullWeek | 1 | Indica que a primeira semana do ano começa na primeira ocorrência do primeiro dia designado da semana no ou após o primeiro dia do ano. O valor é 1. |
Comentários
Um membro da CalendarWeekRule enumeração é retornado pela DateTimeFormatInfo.CalendarWeekRule propriedade e é usado pelo calendário atual da cultura para determinar a regra da semana do calendário. O valor de enumeração também é usado como um parâmetro para o Calendar.GetWeekOfYear método .
As regras da semana do calendário dependem do System.DayOfWeek valor que indica o primeiro dia da semana, além de depender de um CalendarWeekRule valor. A DateTimeFormatInfo.FirstDayOfWeek propriedade fornece o valor padrão para uma cultura, mas qualquer DayOfWeek valor pode ser especificado como o primeiro dia da semana no Calendar.GetWeekOfYear método .
A primeira semana com base no FirstDay
valor pode ter de um a sete dias. A primeira semana com base no FirstFullWeek
valor sempre tem sete dias. A primeira semana com base no FirstFourDayWeek
valor pode ter de quatro a sete dias.
Por exemplo, no calendário gregoriano, suponha que o primeiro dia do ano (1º de janeiro) caia em uma terça-feira e o primeiro dia designado da semana seja domingo. A seleção FirstFullWeek
define o primeiro domingo (6 de janeiro) como o início da primeira semana do ano. Os primeiros cinco dias do ano são considerados parte da última semana do ano anterior. Por outro lado, a seleção FirstFourDayWeek
define o primeiro dia do ano (1º de janeiro) como o início da primeira semana do ano porque há mais de quatro dias de 1º de janeiro até o dia anterior ao domingo seguinte.
Data | FirstDay | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
Segunda-feira, 31 de dezembro | Última semana do ano anterior | Última semana do ano anterior | Última semana do ano anterior |
1º de janeiro | Semana 1 | Última semana do ano anterior | Semana 1 |
Jan 2 Wed | Semana 1 | Última semana do ano anterior | Semana 1 |
Qui de 3 de janeiro | Semana 1 | Última semana do ano anterior | Semana 1 |
4 de janeiro sex | Semana 1 | Última semana do ano anterior | Semana 1 |
5 de janeiro sáb | Semana 1 | Última semana do ano anterior | Semana 1 |
Sol de 6 de Janeiro | Semana 2 | Semana 1 | Semana 2 |
7 de janeiro | Semana 2 | Semana 1 | Semana 2 |
Jan 8 Tue | Semana 2 | Semana 1 | Semana 2 |
9 de janeiro Wed | Semana 2 | Semana 1 | Semana 2 |
Qui de 10 de janeiro | Semana 2 | Semana 1 | Semana 2 |
11 de janeiro sex | Semana 2 | Semana 1 | Semana 2 |
12 de janeiro sáb | Semana 2 | Semana 1 | Semana 2 |
Suponha que o primeiro dia do ano (1º de janeiro) caia em uma sexta-feira e o primeiro dia designado da semana seja domingo. A seleção FirstFourDayWeek
define o primeiro domingo (3 de janeiro) como o início da primeira semana do ano porque há menos de quatro dias de 1º de janeiro até o dia anterior ao domingo seguinte.
Data | FirstDay | FirstFullWeek | FirstFourDayWeek |
---|---|---|---|
Qui de 31 de dezembro | Última semana do ano anterior | Última semana do ano anterior | Última semana do ano anterior |
1º de janeiro sex | Semana 1 | Última semana do ano anterior | Última semana do ano anterior |
2 de janeiro sáb | Semana 1 | Última semana do ano anterior | Última semana do ano anterior |
3 de janeiro Dom | Semana 2 | Semana 1 | Semana 1 |
4 de janeiro | Semana 2 | Semana 1 | Semana 1 |
Jan 5 Tue | Semana 2 | Semana 1 | Semana 1 |
Jan 6 Wed | Semana 2 | Semana 1 | Semana 1 |
Qui de 7 de janeiro | Semana 2 | Semana 1 | Semana 1 |
8 de janeiro sex | Semana 2 | Semana 1 | Semana 1 |
9 de janeiro sáb | Semana 2 | Semana 1 | Semana 1 |
O exemplo a seguir ilustra como os CalendarWeekRule valores e DayOfWeek são usados juntos para determinar como as semanas são atribuídas. No calendário gregoriano, o primeiro dia do ano (1º de janeiro) em 2013 cai em uma terça-feira. Se o primeiro dia designado da semana for domingo, o primeiro domingo (6 de janeiro) será o primeiro dia da primeira semana do ano e o sábado (5 de janeiro) pertence à 53ª semana do ano anterior. Alterar a regra da semana do calendário para FirstFourDayWeek
define terça-feira (1º de janeiro) como o início da primeira semana do ano, pois há mais de quatro dias entre terça-feira, 1º de janeiro e domingo, 6 de janeiro. Usando essa regra, 5 de janeiro pertence à primeira semana do ano. Para 2010, um ano em que 1º de janeiro cai em uma sexta-feira, aplicando a FirstFourDayWeek
regra com DayOfWeek.Sunday como o primeiro dia da semana torna domingo, 3 de janeiro, o início da primeira semana do ano, porque a primeira semana em 2010 que tem mais de quatro dias é de 3 a 9 de janeiro.
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
Observação
Isso não é mapeado exatamente para ISO 8601. As diferenças são discutidas na entrada de blog formato ISO 8601 Week of Year no Microsoft .NET. Começando com o .NET Core 3.0 e ISOWeek.GetYearISOWeek.GetWeekOfYear resolva esse problema.
Cada CultureInfo objeto dá suporte a um conjunto de calendários. A Calendar propriedade retorna o calendário padrão para a cultura e a OptionalCalendars propriedade retorna uma matriz que contém todos os calendários compatíveis com a cultura. Para alterar o calendário usado por um CultureInfo, defina a Calendar propriedade de CultureInfo.DateTimeFormat como um novo Calendar.