CalendarWeekRule Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
| Name | Valor | Description |
|---|---|---|
| FirstDay | 0 | Indica que a primeira semana do ano começa no primeiro dia do ano e termina antes do primeiro dia designado seguinte. O valor é 0. |
| FirstFullWeek | 1 | Indica que a primeira semana do ano começa na primeira ocorrência do primeiro dia designado da semana, no primeiro dia do ano ou a seguir. O valor é 1. |
| 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. |
Observações
Um membro da CalendarWeekRule enumeração é devolvido pela DateTimeFormatInfo.CalendarWeekRule propriedade e é usado pelo calendário atual da cultura para determinar a regra da semana civil. O valor de enumeração também é usado como parâmetro do Calendar.GetWeekOfYear método.
As regras da semana civil 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 valor, FirstDay pode ter de um a sete dias. A primeira semana, com base no valor, FirstFullWeek tem sempre sete dias. A primeira semana, com base no valor, FirstFourDayWeek pode ter de quatro a sete dias.
Por exemplo, no calendário gregoriano, suponha que o primeiro dia do ano (1 de janeiro) cai numa terça-feira e o primeiro dia designado da semana é domingo. Selecionar 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. Em contraste, selecionar FirstFourDayWeek define o primeiro dia do ano (1 de janeiro) como o início da primeira semana do ano, pois há mais de quatro dias desde 1 de janeiro até ao dia anterior ao domingo seguinte.
| Data | Primeiro Dia | FirstFullWeek | PrimeiroQuatro Dias da Semana |
|---|---|---|---|
| 31 de dezembro Seg | Última semana do ano anterior | Última semana do ano anterior | Última semana do ano anterior |
| 1 de janeiro Ter | Semana 1 | Última semana do ano anterior | Semana 1 |
| 2 de janeiro Qua | Semana 1 | Última semana do ano anterior | Semana 1 |
| 3 de janeiro Qui | Semana 1 | Última semana do ano anterior | Semana 1 |
| 4 Jan Sex | Semana 1 | Última semana do ano anterior | Semana 1 |
| 5 Jan Sáb | Semana 1 | Última semana do ano anterior | Semana 1 |
| Jan 6 Sun | Semana 2 | Semana 1 | Semana 2 |
| 7 de janeiro Seg | Semana 2 | Semana 1 | Semana 2 |
| 8 de janeiro Ter | Semana 2 | Semana 1 | Semana 2 |
| 9 de janeiro Qua | Semana 2 | Semana 1 | Semana 2 |
| 10 de janeiro Qui | Semana 2 | Semana 1 | Semana 2 |
| 11 Jan Sex | Semana 2 | Semana 1 | Semana 2 |
| 12 Jan Sáb | Semana 2 | Semana 1 | Semana 2 |
Suponha que o primeiro dia do ano (1 de janeiro) cai numa sexta-feira e o primeiro dia designado da semana é domingo. Selecionar FirstFourDayWeek define o primeiro domingo (3 de janeiro) como o início da primeira semana do ano porque há menos de quatro dias entre 1 de janeiro e o dia anterior ao domingo seguinte.
| Data | Primeiro Dia | FirstFullWeek | PrimeiroQuatro Dias da Semana |
|---|---|---|---|
| 31 de dezembro Qui | Última semana do ano anterior | Última semana do ano anterior | Última semana do ano anterior |
| 1 Jan Sex | Semana 1 | Última semana do ano anterior | Última semana do ano anterior |
| 2 Jan Sáb | Semana 1 | Última semana do ano anterior | Última semana do ano anterior |
| Jan 3 Sun | Semana 2 | Semana 1 | Semana 1 |
| 4 Jan Seg | Semana 2 | Semana 1 | Semana 1 |
| 5 de janeiro Ter | Semana 2 | Semana 1 | Semana 1 |
| 6 de janeiro Qua | Semana 2 | Semana 1 | Semana 1 |
| 7 de janeiro Qui | 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 seguinte ilustra como os CalendarWeekRule valores e DayOfWeek são usados em conjunto para determinar como as semanas são atribuídas. No calendário gregoriano, o primeiro dia do ano (1 de janeiro) em 2013 cai numa terça-feira. Se o primeiro dia designado da semana for domingo, o primeiro domingo (6 de janeiro) é o primeiro dia da primeira semana do ano, e o sábado (5 de janeiro) pertence à quinquagésima terceira semana do ano anterior. Alterar a regra da semana civil para FirstFourDayWeek definir terça-feira (1 de janeiro) como o início da primeira semana do ano, porque há mais de quatro dias entre terça-feira, 1 de janeiro, e domingo, 6 de janeiro. Segundo esta regra, o dia 5 de janeiro corresponde à primeira semana do ano. Para 2010, um ano em que 1 de janeiro cai numa sexta-feira, aplicar a FirstFourDayWeek regra de DayOfWeek.Sunday como primeiro dia da semana faz com que domingo, 3 de janeiro, seja o início da primeira semana do ano, porque a primeira semana de 2010 com 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
Note
Isto não corresponde exatamente à ISO 8601. As diferenças são discutidas na entrada do blogue ISO 8601 Semana do Ano em formato Microsoft .NET. Começando com .NET Core 3.0, ISOWeek.GetYear e ISOWeek.GetWeekOfYear resolvem este problema.
Cada CultureInfo objeto suporta um conjunto de calendários. A Calendar propriedade devolve o calendário padrão da cultura, e a OptionalCalendars propriedade devolve um array contendo todos os calendários suportados pela cultura. Para alterar o calendário usado por um CultureInfo, defina a Calendar propriedade de CultureInfo.DateTimeFormat para um novo Calendar.