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

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

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)

Syntax

Public Sub New ( _
    year As Integer, _
    month As Integer, _
    day As Integer, _
    hour As Integer, _
    minute As Integer, _
    second As Integer, _
    millisecond As Integer, _
    calendar As Calendar, _
    kind As DateTimeKind _
)
public DateTime(
    int year,
    int month,
    int day,
    int hour,
    int minute,
    int second,
    int millisecond,
    Calendar calendar,
    DateTimeKind kind
)

Parameters

  • year
    Type: System..::.Int32
    The year (1 through the number of years in calendar).
  • month
    Type: System..::.Int32
    The month (1 through the number of months in calendar).
  • kind
    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.

Exceptions

Exception Condition
ArgumentNullException

calendar is nullNothingnullptra null reference (Nothing in Visual Basic).

ArgumentOutOfRangeException

year is not in the range supported by calendar.

-or-

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

-or-

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

-or-

hour is less than 0 or greater than 23.

-or-

minute is less than 0 or greater than 59.

-or-

second is less than 0 or greater than 59.

-or-

millisecond is less than 0 or greater than 999.

ArgumentException

kind is not one of the DateTimeKind values.

Remarks

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 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, HebrewCalendar, HijriCalendar, and JapaneseCalendar.

Examples

The following example calls the DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) constructor to instantiate a DateTime value by using a HijriCalendar object. The DateTime value in the Hijri calendar is then displayed in two different ways. Because the current culture may not support the Hijri calendar, the date in the Hijri calendar is displayed by making individual calls to its HijriCalendar..::.GetMonth, HijriCalendar..::.GetDayOfMonth, and HijriCalendar..::.GetYear methods. The example then changes the current culture to Arabic (Syria) and changes the current culture's default calendar to the Hijri calendar. Because Hijri is now the current culture's default calendar, the ToString(String, IFormatProvider) method, which is called implicitly by the String..::.Format method, uses it to format the date. When the previous current culture (which is English (United States) in this case) is restored, the ToString(String, IFormatProvider) method uses the current culture's default Gregorian calendar to format the date.

Imports System.Globalization
Imports System.Text.RegularExpressions
Imports System.Threading

Module Example
   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      ' Define Hijri calendar.
      Dim hijri As New HijriCalendar()
      ' Define a date using the Hijri calendar.
      Dim date1 As New Date(1431, 9, 9, 16, 32, 18, 500, _
                            hijri, DateTimeKind.Local)

      outputBlock.Text &= "Using the Hijri Calendar with the Default Culture:" & vbCrLf
      outputBlock.Text += String.Format("{0:M/dd/yyyy h:mm:ss.fff tt} {1}", date1, date1.Kind) & vbCrLf
      outputBlock.Text += String.Format("{0}/{1}/{2} {3}:{4:D2}:{5:D2}.{6:G3} {7}", _
                                       hijri.GetMonth(date1), _
                                       hijri.GetDayOfMonth(date1), _
                                       hijri.GetYear(date1), _
                                       hijri.GetHour(date1), _
                                       hijri.GetMinute(date1), _
                                       hijri.GetSecond(date1), _
                                       hijri.GetMilliseconds(date1), _
                                       date1.Kind) & vbCrLf
      outputBlock.Text &= vbCrLf

      ' Get current culture so it can later be restored.
      Dim dftCulture As CultureInfo = Thread.CurrentThread.CurrentCulture

      ' Define strings for use in composite formatting.
      Dim dFormat As String
      Dim fmtString As String
      ' Make ar-SY the current culture and Hijri the current calendar.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("ar-SY")
      Dim current As CultureInfo = 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}"
      outputBlock.Text &= String.Format(fmtString, current, GetCalendarName(hijri), _
                        date1, date1.Kind) + vbCrLf

      ' 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}"
      outputBlock.Text += String.Format(fmtString, CultureInfo.CurrentCulture, _
                        GetCalendarName(CultureInfo.CurrentCulture.Calendar), _
                        date1, date1.Kind) & vbCrLf
   End Sub

   Private Function GetCalendarName(ByVal cal As Calendar) As String
      Return Regex.Match(cal.ToString(), "\.(\w+)Calendar").Groups(1).Value
   End Function
End Module
' The example displays the following output:
'       Using the Persian Calendar:
'       8/18/2010 4:32:18.500 PM
'       5/27/1389 16:32:18.500
'       
'       Using the Hijri Calendar:
'       ar-SY culture using the Hijri calendar: 09/09/1431 16:32:18.500
'       en-US culture using the Gregorian calendar: 8/18/2010 16:32:18.500
using System;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Threading;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Define Hijri calendar.
      HijriCalendar hijri = new HijriCalendar();
      // Define a date using the Hijri calendar.
      DateTime date1 = new DateTime(1431, 9, 9, 16, 32, 18, 500,
                                    hijri, DateTimeKind.Local);

      outputBlock.Text += "Using the Hijri Calendar with the Default Culture:\n";
      outputBlock.Text += String.Format("{0:M/dd/yyyy h:mm:ss.fff tt} {1}", date1, date1.Kind) + "\n";
      outputBlock.Text += String.Format("{0}/{1}/{2} {3}:{4:D2}:{5:D2}.{6:G3} {7}\n\n",
                                       hijri.GetMonth(date1),
                                       hijri.GetDayOfMonth(date1),
                                       hijri.GetYear(date1),
                                       hijri.GetHour(date1),
                                       hijri.GetMinute(date1),
                                       hijri.GetSecond(date1),
                                       hijri.GetMilliseconds(date1),
                                       date1.Kind);

      // 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;
      // 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}\n";
      outputBlock.Text += String.Format(fmtString, current, GetCalendarName(hijri),
                        date1, date1.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}\n";
      outputBlock.Text += String.Format(fmtString,
                        CultureInfo.CurrentCulture,
                        GetCalendarName(CultureInfo.CurrentCulture.Calendar),
                        date1, date1.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

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

DateTime Structure

DateTime Overload

System Namespace