CalendarWeekRule Enumeração

Definição

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
CalendarWeekRule
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.

Aplica-se a

Ver também