Compartilhar via


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

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.

Aplica-se a

Confira também