Calendar Class

Definition

Represents time in divisions, such as weeks, months, and years.

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
Inheritance
Calendar
Derived
Attributes
Implements

Examples

The following code example demonstrates the members of the Calendar class.

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

Remarks

A calendar divides time into units, such as weeks, months, and years. The number, length, and start of the divisions vary in each calendar.

Note

For information about using the calendar classes in .NET, see Working with Calendars.

Any moment in time can be represented as a set of numeric values using a particular calendar. For example, a vernal equinox occurred at (1999, 3, 20, 8, 46, 0, 0.0) in the Gregorian calendar, that is, March 20, 1999 C.E. at 8:46:00:0.0. An implementation of Calendar can map any date in the range of a specific calendar to a similar set of numeric values, and DateTime can map such sets of numeric values to a textual representation using information from Calendar and DateTimeFormatInfo. The textual representation can be culture-sensitive, for example, "8:46 AM March 20th 1999 AD" for the en-US culture, or culture-insensitive, for example, "1999-03-20T08:46:00" in ISO 8601 format.

A Calendar implementation can define one or more eras. The Calendar class identifies the eras as enumerated integers, where the current era (CurrentEra) has the value 0.

Important

Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Such a change of era affects all applications that use these calendars. For more information and to determine whether your applications are affected, see Handling a new era in the Japanese calendar in .NET. For information on testing your applications on Windows systems to ensure their readiness for the era change, see Prepare your application for the Japanese era change. For features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras, see Working with eras.

To make up for the difference between the calendar year and the actual time that the earth rotates around the sun or the actual time that the moon rotates around the earth, a leap year has a different number of days from a standard calendar year. Each Calendar implementation defines leap years differently.

For consistency, the first unit in each interval (the first month, for example) is assigned the value 1.

The System.Globalization namespace includes the following Calendar implementations:

Constructors

Calendar()

Initializes a new instance of the Calendar class.

Fields

CurrentEra

Represents the current era of the current calendar. The value of this field is 0.

Properties

AlgorithmType

Gets a value indicating whether the current calendar is solar-based, lunar-based, or a combination of both.

DaysInYearBeforeMinSupportedYear

Gets the number of days in the year that precedes the year that is specified by the MinSupportedDateTime property.

Eras

When overridden in a derived class, gets the list of eras in the current calendar.

IsReadOnly

Gets a value indicating whether this Calendar object is read-only.

MaxSupportedDateTime

Gets the latest date and time supported by this Calendar object.

MinSupportedDateTime

Gets the earliest date and time supported by this Calendar object.

TwoDigitYearMax

Gets or sets the last year of a 100-year range that can be represented by a 2-digit year.

Methods

AddDays(DateTime, Int32)

Returns a DateTime that is the specified number of days away from the specified DateTime.

AddHours(DateTime, Int32)

Returns a DateTime that is the specified number of hours away from the specified DateTime.

AddMilliseconds(DateTime, Double)

Returns a DateTime that is the specified number of milliseconds away from the specified DateTime.

AddMinutes(DateTime, Int32)

Returns a DateTime that is the specified number of minutes away from the specified DateTime.

AddMonths(DateTime, Int32)

When overridden in a derived class, returns a DateTime that is the specified number of months away from the specified DateTime.

AddSeconds(DateTime, Int32)

Returns a DateTime that is the specified number of seconds away from the specified DateTime.

AddWeeks(DateTime, Int32)

Returns a DateTime that is the specified number of weeks away from the specified DateTime.

AddYears(DateTime, Int32)

When overridden in a derived class, returns a DateTime that is the specified number of years away from the specified DateTime.

Clone()

Creates a new object that is a copy of the current Calendar object.

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetDayOfMonth(DateTime)

When overridden in a derived class, returns the day of the month in the specified DateTime.

GetDayOfWeek(DateTime)

When overridden in a derived class, returns the day of the week in the specified DateTime.

GetDayOfYear(DateTime)

When overridden in a derived class, returns the day of the year in the specified DateTime.

GetDaysInMonth(Int32, Int32)

Returns the number of days in the specified month and year of the current era.

GetDaysInMonth(Int32, Int32, Int32)

When overridden in a derived class, returns the number of days in the specified month, year, and era.

GetDaysInYear(Int32)

Returns the number of days in the specified year of the current era.

GetDaysInYear(Int32, Int32)

When overridden in a derived class, returns the number of days in the specified year and era.

GetEra(DateTime)

When overridden in a derived class, returns the era of the specified DateTime.

GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetHour(DateTime)

Returns the hours value in the specified DateTime.

GetLeapMonth(Int32)

Calculates the leap month for a specified year.

GetLeapMonth(Int32, Int32)

Calculates the leap month for a specified year and era.

GetMilliseconds(DateTime)

Returns the milliseconds value in the specified DateTime.

GetMinute(DateTime)

Returns the minutes value in the specified DateTime.

GetMonth(DateTime)

When overridden in a derived class, returns the month in the specified DateTime.

GetMonthsInYear(Int32)

Returns the number of months in the specified year in the current era.

GetMonthsInYear(Int32, Int32)

When overridden in a derived class, returns the number of months in the specified year in the specified era.

GetSecond(DateTime)

Returns the seconds value in the specified DateTime.

GetType()

Gets the Type of the current instance.

(Inherited from Object)
GetWeekOfYear(DateTime, CalendarWeekRule, DayOfWeek)

Returns the week of the year that includes the date in the specified DateTime value.

GetYear(DateTime)

When overridden in a derived class, returns the year in the specified DateTime.

IsLeapDay(Int32, Int32, Int32)

Determines whether the specified date in the current era is a leap day.

IsLeapDay(Int32, Int32, Int32, Int32)

When overridden in a derived class, determines whether the specified date in the specified era is a leap day.

IsLeapMonth(Int32, Int32)

Determines whether the specified month in the specified year in the current era is a leap month.

IsLeapMonth(Int32, Int32, Int32)

When overridden in a derived class, determines whether the specified month in the specified year in the specified era is a leap month.

IsLeapYear(Int32)

Determines whether the specified year in the current era is a leap year.

IsLeapYear(Int32, Int32)

When overridden in a derived class, determines whether the specified year in the specified era is a leap year.

MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ReadOnly(Calendar)

Returns a read-only version of the specified Calendar object.

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

Returns a DateTime that is set to the specified date and time in the current era.

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

When overridden in a derived class, returns a DateTime that is set to the specified date and time in the specified era.

ToFourDigitYear(Int32)

Converts the specified year to a four-digit year by using the TwoDigitYearMax property to determine the appropriate century.

ToString()

Returns a string that represents the current object.

(Inherited from Object)

Applies to

See also