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.
public:
DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, System::Globalization::Calendar ^ calendar, DateTimeKind kind);
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, System.Globalization.Calendar calendar, DateTimeKind kind);
new DateTime : int * int * int * int * int * int * int * System.Globalization.Calendar * DateTimeKind -> DateTime
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)
Parameters
The year (1 through the number of years in calendar
).
The month (1 through the number of months in calendar
).
The day (1 through the number of days in month
).
The hours (0 through 23).
The minutes (0 through 59).
The seconds (0 through 59).
The milliseconds (0 through 999).
The calendar that is used to interpret year
, month
, and day
.
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.
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.
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",
persian.GetMonth(date1),
persian.GetDayOfMonth(date1),
persian.GetYear(date1),
persian.GetHour(date1),
persian.GetMinute(date1),
persian.GetSecond(date1),
persian.GetMilliseconds(date1),
date1.Kind,
DateTimeFormatInfo.CurrentInfo.TimeSeparator);
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}";
Console.WriteLine(fmtString,
CultureInfo.CurrentCulture,
GetCalendarName(CultureInfo.CurrentCulture.Calendar),
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
open System
open System.Globalization
open System.Text.RegularExpressions
open System.Threading
let getCalendarName (cal: Calendar) =
Regex.Match(string cal, "\\.(\\w+)Calendar").Groups[1].Value
printfn "Using the Persian Calendar:"
let persian = PersianCalendar()
let date1 = DateTime(1389, 5, 27, 16, 32, 18, 500, persian, DateTimeKind.Local)
printfn $"""{date1.ToString "M/dd/yyyy h:mm:ss.fff tt"} {date1.Kind}"""
let sep = DateTimeFormatInfo.CurrentInfo.TimeSeparator
printfn $"{persian.GetMonth date1}/{persian.GetDayOfMonth date1}/{persian.GetYear date1} {persian.GetHour date1}{sep}{persian.GetMinute date1:D2}{sep}{persian.GetSecond date1:D2}.{persian.GetMilliseconds date1:G3} {date1.Kind}\n"
printfn "Using the Hijri Calendar:"
// Get current culture so it can later be restored.
let dftCulture = Thread.CurrentThread.CurrentCulture
// Define Hijri calendar.
let hijri = HijriCalendar()
// Make ar-SY the current culture and Hijri the current calendar.
Thread.CurrentThread.CurrentCulture <- CultureInfo "ar-SY"
let current = CultureInfo.CurrentCulture
current.DateTimeFormat.Calendar <- hijri
let dFormat =
let dFormat = current.DateTimeFormat.ShortDatePattern
// Ensure year is displayed as four digits.
Regex.Replace(dFormat, "/yy$", "/yyyy") + " H:mm:ss.fff"
let fmtString = "{0} culture using the {1} calendar: {2:" + dFormat + "} {3}"
let date2 = 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
let dFormat2 = DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " H:mm:ss.fff"
let fmtString2 = "{0} culture using the {1} calendar: {2:" + dFormat2 + "} {3}"
Console.WriteLine(fmtString2, CultureInfo.CurrentCulture, getCalendarName CultureInfo.CurrentCulture.Calendar, date2, date2.Kind)
// 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
Imports System.Globalization
Imports System.Text.RegularExpressions
Imports System.Threading
Module Example
Public Sub Main()
Console.WriteLine("Using the Persian Calendar:")
Dim persian As New PersianCalendar()
Dim date1 As New Date(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}", _
persian.GetMonth(date1), _
persian.GetDayOfMonth(date1), _
persian.GetYear(date1), _
persian.GetHour(date1), _
persian.GetMinute(date1), _
persian.GetSecond(date1), _
persian.GetMilliseconds(date1), _
date1.Kind, _
DateTimeFormatInfo.CurrentInfo.TimeSeparator)
Console.WriteLine()
Console.WriteLine("Using the Hijri Calendar:")
' 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
' Define Hijri calendar.
Dim hijri As New HijriCalendar()
' 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}"
Dim date2 As New Date(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}"
Console.WriteLine(fmtString, CultureInfo.CurrentCulture, _
GetCalendarName(CultureInfo.CurrentCulture.Calendar), _
date2, date2.Kind)
End Sub
Private Function GetCalendarName(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
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 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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4