DateTime Constructor (Int32, Int32, Int32, Int32, Int32, Int32, Calendar)
[ 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, and second for the specified calendar.
Assembly: mscorlib (in mscorlib.dll)
'Declaration Public Sub New ( _ year As Integer, _ month As Integer, _ day As Integer, _ hour As Integer, _ minute As Integer, _ second As Integer, _ calendar As Calendar _ )
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).
- day
- Type: System.Int32
The day (1 through the number of days in month).
- hour
- Type: System.Int32
The hours (0 through 23).
- minute
- Type: System.Int32
The minutes (0 through 59).
- second
- Type: System.Int32
The seconds (0 through 59).
- calendar
- Type: System.Globalization.Calendar
The calendar to use to interpret year, month, and day.
| Exception | Condition |
|---|---|
| ArgumentNullException | calendar is Nothing. |
| 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. |
The Kind property is initialized to Unspecified.
The allowable values for year, month, and day depend on calendar. An exception is thrown if the specified date and time cannot be expressed by using calendar.
The System.Globalization namespace provides several calendars, including GregorianCalendar, HebrewCalendar, HijriCalendar, and JapaneseCalendar.
The following example calls the DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) constructor to instantiate a DateTime value by using a HijriCalendar object. The DateTime 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, hijri) outputBlock.Text += "Using the Hijri Calendar with the Default Culture:" + vbCrLf outputBlock.Text &= date1.ToString() & vbCrLf outputBlock.Text += String.Format("{0}/{1}/{2} {3}:{4:D2}:{5:D2}", _ hijri.GetMonth(date1), _ hijri.GetDayOfMonth(date1), _ hijri.GetYear(date1), _ hijri.GetHour(date1), _ hijri.GetMinute(date1), _ hijri.GetSecond(date1)) + vbCrLf outputBlock.Text &= vbCrLf ' Get current culture so it can later be restored. Dim dftCulture As CultureInfo = Thread.CurrentThread.CurrentCulture ' 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 Dim dFormat As String = current.DateTimeFormat.ShortDatePattern ' Ensure year is displayed as four digits. dFormat = Regex.Replace(dFormat, "/yy$", "/yyyy") current.DateTimeFormat.ShortDatePattern = dFormat outputBlock.Text += String.Format("{0} culture using the {1} calendar: {2:g}", current, _ GetCalendarName(hijri), date1) & vbCrLf ' Restore previous culture. Thread.CurrentThread.CurrentCulture = dftCulture outputBlock.Text += String.Format("{0} culture using the {1} calendar: {2:g}", _ CultureInfo.CurrentCulture, _ GetCalendarName(CultureInfo.CurrentCulture.Calendar), _ date1) & 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 Hijri Calendar with the Default Culture: ' 8/18/2010 4:32:00 PM ' 9/9/1431 16:32:18 ' ' ar-SY culture using the Hijri calendar: 09/09/1431 04:32 م ' en-US culture using the Gregorian calendar: 8/18/2010 4:32 PM