Поделиться через


Calendar Класс

Определение

Представляет время в виде раздельных значений, например недель, месяцев и лет.

public ref class Calendar abstract
public ref class Calendar abstract : ICloneable
public abstract class Calendar
public abstract class Calendar : ICloneable
[System.Serializable]
public abstract class Calendar
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Calendar : ICloneable
type Calendar = class
type Calendar = class
    interface ICloneable
[<System.Serializable>]
type Calendar = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Calendar = class
    interface ICloneable
Public MustInherit Class Calendar
Public MustInherit Class Calendar
Implements ICloneable
Наследование
Calendar
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показаны члены Calendar класса .

using namespace System;
using namespace System::Globalization;
void DisplayValues( Calendar^ myCal, DateTime myDT )
{
   Console::WriteLine( "   Era: {0}", myCal->GetEra( myDT ) );
   Console::WriteLine( "   Year: {0}", myCal->GetYear( myDT ) );
   Console::WriteLine( "   Month: {0}", myCal->GetMonth( myDT ) );
   Console::WriteLine( "   DayOfYear: {0}", myCal->GetDayOfYear( myDT ) );
   Console::WriteLine( "   DayOfMonth: {0}", myCal->GetDayOfMonth( myDT ) );
   Console::WriteLine( "   DayOfWeek: {0}", myCal->GetDayOfWeek( myDT ) );
   Console::WriteLine( "   Hour: {0}", myCal->GetHour( myDT ) );
   Console::WriteLine( "   Minute: {0}", myCal->GetMinute( myDT ) );
   Console::WriteLine( "   Second: {0}", myCal->GetSecond( myDT ) );
   Console::WriteLine( "   Milliseconds: {0}", myCal->GetMilliseconds( myDT ) );
   Console::WriteLine();
}

int main()
{
   
   // Sets a DateTime to April 3, 2002 of the Gregorian calendar.
   DateTime myDT = DateTime(2002,4,3,gcnew GregorianCalendar);
   
   // Uses the default calendar of the InvariantCulture.
   Calendar^ myCal = CultureInfo::InvariantCulture->Calendar;
   
   // Displays the values of the DateTime.
   Console::WriteLine( "April 3, 2002 of the Gregorian calendar:" );
   DisplayValues( myCal, myDT );
   
   // Adds 5 to every component of the DateTime.
   myDT = myCal->AddYears( myDT, 5 );
   myDT = myCal->AddMonths( myDT, 5 );
   myDT = myCal->AddWeeks( myDT, 5 );
   myDT = myCal->AddDays( myDT, 5 );
   myDT = myCal->AddHours( myDT, 5 );
   myDT = myCal->AddMinutes( myDT, 5 );
   myDT = myCal->AddSeconds( myDT, 5 );
   myDT = myCal->AddMilliseconds( myDT, 5 );
   
   // Displays the values of the DateTime.
   Console::WriteLine( "After adding 5 to each component of the DateTime:" );
   DisplayValues( myCal, myDT );
}

/*
This code produces the following output.

April 3, 2002 of the Gregorian calendar:
Era:          1
Year:         2002
Month:        4
DayOfYear:    93
DayOfMonth:   3
DayOfWeek:    Wednesday
Hour:         0
Minute:       0
Second:       0
Milliseconds: 0

After adding 5 to each component of the DateTime:
Era:          1
Year:         2007
Month:        10
DayOfYear:    286
DayOfMonth:   13
DayOfWeek:    Saturday
Hour:         5
Minute:       5
Second:       5
Milliseconds: 5

*/
using System;
using System.Globalization;

public class SamplesCalendar  {

   public static void Main()  {

      // Sets a DateTime to April 3, 2002 of the Gregorian calendar.
      DateTime myDT = new DateTime( 2002, 4, 3, new GregorianCalendar() );

      // Uses the default calendar of the InvariantCulture.
      Calendar myCal = CultureInfo.InvariantCulture.Calendar;

      // Displays the values of the DateTime.
      Console.WriteLine( "April 3, 2002 of the Gregorian calendar:" );
      DisplayValues( myCal, myDT );

      // Adds 5 to every component of the DateTime.
      myDT = myCal.AddYears( myDT, 5 );
      myDT = myCal.AddMonths( myDT, 5 );
      myDT = myCal.AddWeeks( myDT, 5 );
      myDT = myCal.AddDays( myDT, 5 );
      myDT = myCal.AddHours( myDT, 5 );
      myDT = myCal.AddMinutes( myDT, 5 );
      myDT = myCal.AddSeconds( myDT, 5 );
      myDT = myCal.AddMilliseconds( myDT, 5 );

      // Displays the values of the DateTime.
      Console.WriteLine( "After adding 5 to each component of the DateTime:" );
      DisplayValues( myCal, myDT );
   }

   public static void DisplayValues( Calendar myCal, DateTime myDT )  {
      Console.WriteLine( "   Era:          {0}", myCal.GetEra( myDT ) );
      Console.WriteLine( "   Year:         {0}", myCal.GetYear( myDT ) );
      Console.WriteLine( "   Month:        {0}", myCal.GetMonth( myDT ) );
      Console.WriteLine( "   DayOfYear:    {0}", myCal.GetDayOfYear( myDT ) );
      Console.WriteLine( "   DayOfMonth:   {0}", myCal.GetDayOfMonth( myDT ) );
      Console.WriteLine( "   DayOfWeek:    {0}", myCal.GetDayOfWeek( myDT ) );
      Console.WriteLine( "   Hour:         {0}", myCal.GetHour( myDT ) );
      Console.WriteLine( "   Minute:       {0}", myCal.GetMinute( myDT ) );
      Console.WriteLine( "   Second:       {0}", myCal.GetSecond( myDT ) );
      Console.WriteLine( "   Milliseconds: {0}", myCal.GetMilliseconds( myDT ) );
      Console.WriteLine();
   }
}


/*
This code produces the following output.

April 3, 2002 of the Gregorian calendar:
   Era:          1
   Year:         2002
   Month:        4
   DayOfYear:    93
   DayOfMonth:   3
   DayOfWeek:    Wednesday
   Hour:         0
   Minute:       0
   Second:       0
   Milliseconds: 0

After adding 5 to each component of the DateTime:
   Era:          1
   Year:         2007
   Month:        10
   DayOfYear:    286
   DayOfMonth:   13
   DayOfWeek:    Saturday
   Hour:         5
   Minute:       5
   Second:       5
   Milliseconds: 5

*/
Imports System.Globalization


Public Class SamplesCalendar   

   Public Shared Sub Main()

      ' Sets a DateTime to April 3, 2002 of the Gregorian calendar.
      Dim myDT As New DateTime(2002, 4, 3, New GregorianCalendar())

      ' Uses the default calendar of the InvariantCulture.
      Dim myCal As Calendar = CultureInfo.InvariantCulture.Calendar

      ' Displays the values of the DateTime.
      Console.WriteLine("April 3, 2002 of the Gregorian calendar:")
      DisplayValues(myCal, myDT)

      ' Adds 5 to every component of the DateTime.
      myDT = myCal.AddYears(myDT, 5)
      myDT = myCal.AddMonths(myDT, 5)
      myDT = myCal.AddWeeks(myDT, 5)
      myDT = myCal.AddDays(myDT, 5)
      myDT = myCal.AddHours(myDT, 5)
      myDT = myCal.AddMinutes(myDT, 5)
      myDT = myCal.AddSeconds(myDT, 5)
      myDT = myCal.AddMilliseconds(myDT, 5)

      ' Displays the values of the DateTime.
      Console.WriteLine("After adding 5 to each component of the DateTime:")
      DisplayValues(myCal, myDT)

   End Sub

   Public Shared Sub DisplayValues(myCal As Calendar, myDT As DateTime)
      Console.WriteLine("   Era:          {0}", myCal.GetEra(myDT))
      Console.WriteLine("   Year:         {0}", myCal.GetYear(myDT))
      Console.WriteLine("   Month:        {0}", myCal.GetMonth(myDT))
      Console.WriteLine("   DayOfYear:    {0}", myCal.GetDayOfYear(myDT))
      Console.WriteLine("   DayOfMonth:   {0}", myCal.GetDayOfMonth(myDT))
      Console.WriteLine("   DayOfWeek:    {0}", myCal.GetDayOfWeek(myDT))
      Console.WriteLine("   Hour:         {0}", myCal.GetHour(myDT))
      Console.WriteLine("   Minute:       {0}", myCal.GetMinute(myDT))
      Console.WriteLine("   Second:       {0}", myCal.GetSecond(myDT))
      Console.WriteLine("   Milliseconds: {0}", myCal.GetMilliseconds(myDT))
      Console.WriteLine()
   End Sub

End Class


'This code produces the following output.
'
'April 3, 2002 of the Gregorian calendar:
'   Era:          1
'   Year:         2002
'   Month:        4
'   DayOfYear:    93
'   DayOfMonth:   3
'   DayOfWeek:    Wednesday
'   Hour:         0
'   Minute:       0
'   Second:       0
'   Milliseconds: 0
'
'After adding 5 to each component of the DateTime:
'   Era:          1
'   Year:         2007
'   Month:        10
'   DayOfYear:    286
'   DayOfMonth:   13
'   DayOfWeek:    Saturday
'   Hour:         5
'   Minute:       5
'   Second:       5
'   Milliseconds: 5

Комментарии

В календаре время делится на единицы, например недели, месяцы и годы. Количество, длина и начало деления зависят от календаря.

Примечание

Сведения об использовании классов календарей в .NET см. в статье Работа с календарями.

Любой момент времени можно представить в виде набора числовых значений с помощью определенного календаря. Например, весеннее равноденствие произошло в (1999, 3, 20, 8, 46, 0, 0,0) по григорианскому календарю, то есть 20 марта 1999 г. н.э. в 8:46:00:0.0. Реализация Calendar может сопоставить любую дату в диапазоне определенного календаря с аналогичным набором числовых значений, а DateTime такие наборы числовых значений могут сопоставляться с текстовым представлением с помощью сведений из Calendar и DateTimeFormatInfo. Текстовое представление может быть с учетом языка и региональных параметров, например "8:46 20 марта 1999 г. AD" для языка и региональных параметров en-US, или без учета языка, например "1999-03-20T08:46:00" в формате ISO 8601.

Реализация Calendar может определить одну или несколько эпох. Класс Calendar определяет эры как перечисляемые целые числа, где текущая эра (CurrentEra) имеет значение 0.

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва. Изменение эры затрагивает все приложения, использующие эти календари. Дополнительные сведения и определение того, затронуты ли ваши приложения, см. в статье Обработка новой эры в японском календаре в .NET. Сведения о тестировании приложений в системах Windows для обеспечения их готовности к изменению эпохи см. в статье Подготовка приложения к изменению японской эры. Сведения о функциях в .NET, поддерживающих календари с несколькими эрами, а также рекомендации по работе с календарями, поддерживающими несколько эпох, см. в статье Работа с эрами.

Чтобы сравить разницу между календарным годом и фактическим временем вращения Земли вокруг Солнца или фактическим временем, когда Луна вращается вокруг Земли, високосный год имеет другое количество дней от стандартного календарного года. Каждая Calendar реализация определяет високосные годы по-разному.

Для обеспечения согласованности первой единице в каждом интервале (например, первый месяц) присваивается значение 1.

Пространство System.Globalization имен включает следующие Calendar реализации:

Конструкторы

Calendar()

Инициализирует новый экземпляр класса Calendar.

Поля

CurrentEra

Представляет текущую эру для текущего календаря. Значение этого поля равно 0.

Свойства

AlgorithmType

Возвращает значение, показывающее, является ли текущий календарь солнечным, лунным или сочетанием и того, и другого.

DaysInYearBeforeMinSupportedYear

Получает число дней в году, который предшествует году, указанному свойством MinSupportedDateTime.

Eras

При переопределении в производном классе возвращает список эр в текущем календаре.

IsReadOnly

Возвращает значение, указывающее, является ли объект Calendar доступным только для чтения.

MaxSupportedDateTime

Возвращает самые последние дату и время, поддерживаемые этим объектом Calendar.

MinSupportedDateTime

Возвращает самые ранние дату и время, поддерживаемые этим объектом Calendar.

TwoDigitYearMax

Возвращает или задает последний год в диапазоне ста лет, для которого существует двузначное представление года.

Методы

AddDays(DateTime, Int32)

Возвращает DateTime как заданное число дней из заданного объекта DateTime.

AddHours(DateTime, Int32)

Возвращает DateTime как заданное число часов из заданного объекта DateTime.

AddMilliseconds(DateTime, Double)

Возвращает DateTime как заданное число миллисекунд из заданного объекта DateTime.

AddMinutes(DateTime, Int32)

Возвращает DateTime как заданное число минут из заданного объекта DateTime.

AddMonths(DateTime, Int32)

При переопределении в производном классе возвращает DateTime как заданное число месяцев из заданного DateTime.

AddSeconds(DateTime, Int32)

Возвращает DateTime как заданное число секунд из заданного объекта DateTime.

AddWeeks(DateTime, Int32)

Возвращает DateTime как заданное число недель из заданного объекта DateTime.

AddYears(DateTime, Int32)

При переопределении в производном классе возвращает DateTime как заданное число лет из заданного DateTime.

Clone()

Создает новый объект, являющийся копией текущего объекта Calendar.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetDayOfMonth(DateTime)

При переопределении в производном классе возвращает день месяца в заданном DateTime.

GetDayOfWeek(DateTime)

При переопределении в производном классе возвращает день недели в заданном DateTime.

GetDayOfYear(DateTime)

При переопределении в производном классе возвращает день года в заданном DateTime.

GetDaysInMonth(Int32, Int32)

Возвращает число дней в указанном месяце указанных года текущей эры.

GetDaysInMonth(Int32, Int32, Int32)

При переопределении в производном классе возвращает число дней в указанном месяце, году и в указанной эре.

GetDaysInYear(Int32)

Возвращает число дней в указанном году текущей эры.

GetDaysInYear(Int32, Int32)

При переопределении в производном классе возвращает число дней в указанном году и в указанной эре.

GetEra(DateTime)

При переопределении в производном классе возвращает эру заданного DateTime.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetHour(DateTime)

Возвращает значение часов в заданном DateTime.

GetLeapMonth(Int32)

Вычисляет високосный месяц для заданного года.

GetLeapMonth(Int32, Int32)

Вычисляет високосный месяц для заданных года и эры.

GetMilliseconds(DateTime)

Возвращает значение миллисекунд в заданном DateTime.

GetMinute(DateTime)

Возвращает значение минут в заданном DateTime.

GetMonth(DateTime)

При переопределении в производном классе возвращает месяц в заданном DateTime.

GetMonthsInYear(Int32)

Возвращает число месяцев в указанном году текущей эры.

GetMonthsInYear(Int32, Int32)

При переопределении в производном классе возвращает число месяцев в указанном году указанной эры.

GetSecond(DateTime)

Возвращает значение секунд в заданном DateTime.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetWeekOfYear(DateTime, CalendarWeekRule, DayOfWeek)

Возвращает неделю года, к которой относится дата в заданном значении DateTime.

GetYear(DateTime)

При переопределении в производном классе возвращает год в заданном DateTime.

IsLeapDay(Int32, Int32, Int32)

Определяет, является ли указанная дата текущей эры високосным днем.

IsLeapDay(Int32, Int32, Int32, Int32)

При переопределении в производном классе определяет, является ли указанная дата указанной эры високосным днем.

IsLeapMonth(Int32, Int32)

Определяет, является ли указанный месяц указанного года текущей эры високосным месяцем.

IsLeapMonth(Int32, Int32, Int32)

При переопределении в производном классе определяет, является ли указанный месяц указанных года и эры високосным месяцем.

IsLeapYear(Int32)

Определяет, является ли указанный год текущей эры високосным годом.

IsLeapYear(Int32, Int32)

При переопределении в производном классе определяет, является ли указанный год указанной эры високосным годом.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ReadOnly(Calendar)

Возвращает доступную только для чтения версию указанного объекта Calendar.

ToDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Возвращает DateTime с заданными значениями даты и времени текущей эры.

ToDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32)

При переопределении в производном классе возвращает DateTime со значением даты и времени в заданной эре.

ToFourDigitYear(Int32)

Преобразует заданный год в четырехзначное представление с использованием свойства TwoDigitYearMax для определения века.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел