This documentation is archived and is not being maintained.

DateTime Constructor (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time for the specified calendar.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public DateTime(
	int year,
	int month,
	int day,
	int hour,
	int minute,
	int second,
	int millisecond,
	Calendar calendar,
	DateTimeKind kind


Type: System.Int32
The year (1 through the number of years in calendar).
Type: System.Int32
The month (1 through the number of months in calendar).
Type: System.Int32
The day (1 through the number of days in month).
Type: System.Int32
The hours (0 through 23).
Type: System.Int32
The minutes (0 through 59).
Type: System.Int32
The seconds (0 through 59).
Type: System.Int32
The milliseconds (0 through 999).
Type: System.Globalization.Calendar
The calendar that is used to interpret year, month, and day.
Type: System.DateTimeKind
One of the enumeration values that indicates whether year, month, day, hour, minute, second, and millisecond specify a local time, Coordinated Universal Time (UTC), or neither.


calendar is null.


year is not in the range supported by calendar.


month is less than 1 or greater than the number of months in calendar.


day is less than 1 or greater than the number of days in month.


hour is less than 0 or greater than 23.


minute is less than 0 or greater than 59.


second is less than 0 or greater than 59.


millisecond is less than 0 or greater than 999.


kind is not one of the DateTimeKind values.

The allowable values for year, month, and day parameters depend on the calendar parameter. An exception is thrown if the specified date and time cannot be expressed using calendar.

For applications in which portability of date and time data or a limited degree of time zone awareness is important, you can use the corresponding DateTimeOffset constructor.

The System.Globalization namespace provides several calendars including GregorianCalendar and JulianCalendar.

The following example calls the DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) constructor twice to instantiate two DateTime values. The first call instantiates a DateTime value by using a PersianCalendar object. Because the Persian calendar cannot be designated as the default calendar for a culture, displaying a date in the Persian calendar requires individual calls to its PersianCalendar.GetMonth, PersianCalendar.GetDayOfMonth, and PersianCalendar.GetYear methods. The second call to the constructor instantiates a DateTime value by using a HijriCalendar object. The example changes the current culture to Arabic (Syria) and changes the current culture's default calendar to the Hijri calendar. Because Hijri is the current culture's default calendar, the Console.WriteLine method uses it to format the date. When the previous current culture (which is English (United States) in this case) is restored, the Console.WriteLine method uses the current culture's default Gregorian calendar to format the date.

using System;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Threading;

public class Example
   public static void Main()
      Console.WriteLine("Using the Persian Calendar:");
      PersianCalendar persian = new PersianCalendar();
      DateTime date1 = new DateTime(1389, 5, 27, 16, 32, 18, 500, 
                                    persian, DateTimeKind.Local);
      Console.WriteLine("{0:M/dd/yyyy h:mm:ss.fff tt} {1}", date1, date1.Kind);
      Console.WriteLine("{0}/{1}/{2} {3}{8}{4:D2}{8}{5:D2}.{6:G3} {7}\n", 

      Console.WriteLine("Using the Hijri Calendar:");
      // Get current culture so it can later be restored.
      CultureInfo dftCulture = Thread.CurrentThread.CurrentCulture;

      // Define strings for use in composite formatting.
      string dFormat; 
      string fmtString; 
      // Define Hijri calendar.
      HijriCalendar hijri = new HijriCalendar();
      // Make ar-SY the current culture and Hijri the current calendar.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-SY");
      CultureInfo current = CultureInfo.CurrentCulture;
      current.DateTimeFormat.Calendar = hijri;
      dFormat = current.DateTimeFormat.ShortDatePattern;
      // Ensure year is displayed as four digits.
      dFormat = Regex.Replace(dFormat, "/yy$", "/yyyy") + " H:mm:ss.fff";
      fmtString = "{0} culture using the {1} calendar: {2:" + dFormat + "} {3}";
      DateTime date2 = new DateTime(1431, 9, 9, 16, 32, 18, 500, 
                                    hijri, DateTimeKind.Local);
      Console.WriteLine(fmtString, current, GetCalendarName(hijri), 
                        date2, date2.Kind);

      // Restore previous culture.
      Thread.CurrentThread.CurrentCulture = dftCulture;
      dFormat = DateTimeFormatInfo.CurrentInfo.ShortDatePattern +" H:mm:ss.fff";
      fmtString = "{0} culture using the {1} calendar: {2:" + dFormat + "} {3}";
                        date2, date2.Kind); 

   private static string GetCalendarName(Calendar cal)
      return Regex.Match(cal.ToString(), "\\.(\\w+)Calendar").Groups[1].Value;
// The example displays the following output:
//    Using the Persian Calendar:
//    8/18/2010 4:32:18.500 PM Local
//    5/27/1389 16:32:18.500 Local
//    Using the Hijri Calendar:
//    ar-SY culture using the Hijri calendar: 09/09/1431 16:32:18.500 Local
//    en-US culture using the Gregorian calendar: 8/18/2010 16:32:18.500 Local

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.