Export (0) Print
Expand All

DateTime Constructor (Int32, Int32, Int32, Calendar)

Initializes a new instance of the DateTime structure to the specified year, month, and day for the specified calendar.

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

public DateTime(
	int year,
	int month,
	int day,
	Calendar 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).
calendar
Type: System.Globalization.Calendar
The calendar to use to interpret year, month, and day.

ExceptionCondition
ArgumentNullException

calendar is null.

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.

ArgumentException

The specified parameters evaluate to earlier than DateTime.MinValue or later than DateTime.MaxValue.

The time of day for the resulting DateTime is midnight (00:00:00). 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 using calendar.

The System.Globalization namespace provides several calendars including GregorianCalendar, HebrewCalendar, HijriCalendar, and JapaneseCalendar.

The following example calls the DateTime(Int32, Int32, Int32, Calendar) 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.


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, hijri);

      outputBlock.Text += "Using the Hijri Calendar with the Default Culture:\n";
      outputBlock.Text += date1.ToString() + "\n";
      outputBlock.Text += String.Format("{0}/{1}/{2}\n\n", hijri.GetMonth(date1),
                                       hijri.GetDayOfMonth(date1),
                                       hijri.GetYear(date1));

      // Get current culture so it can later be restored.
      CultureInfo dftCulture = Thread.CurrentThread.CurrentCulture;

      // 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;
      string dFormat = 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:d}\n", current,
                        GetCalendarName(hijri), date1);

      // Restore previous culture.
      Thread.CurrentThread.CurrentCulture = dftCulture;
      outputBlock.Text += String.Format("{0} culture using the {1} calendar: {2:d}\n",
                        CultureInfo.CurrentCulture,
                        GetCalendarName(CultureInfo.CurrentCulture.Calendar),
                        date1);
   }

   private static string GetCalendarName(Calendar cal)
   {
      return Regex.Match(cal.ToString(), "\\.(\\w+)Calendar").Groups[1].Value;
   }
}
// The example displays the following output:
//       Using the Hijri Calendar with the Default Culture:
//       8/18/2010 12:00:00 AM
//       9/9/1431
//       
//       ar-SY culture using the Hijri calendar: 09/09/1431
//       en-US culture using the Gregorian calendar: 8/18/2010
//       
//       Using the Hijri Calendar:
//       ar-SY culture using the Hijri calendar: 09/09/1431
//       en-US culture using the Gregorian calendar: 8/18/2010


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show:
© 2014 Microsoft