情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

DateTime コンストラクター (Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

2013/12/12

DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、日、時、分、秒、およびミリ秒に初期化します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

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

パラメーター

year
型: System.Int32
年 (1 から calendar の年数)。
month
型: System.Int32
月 (1 から calendar の月数)。
day
型: System.Int32
日付 (1 から month の日数)。
hour
型: System.Int32
時間 (0 から 23)。
minute
型: System.Int32
分 (0 から 59)。
second
型: System.Int32
秒 (0 から 59)。
millisecond
型: System.Int32
ミリ秒 (0 から 999)。
calendar
型: System.Globalization.Calendar
yearmonth、および day の解釈に使用するカレンダー。

例外条件
ArgumentNullException

calendarnull です。

ArgumentOutOfRangeException

calendar の範囲外の値が year に指定されています。

または

month が 1 未満か、calendar の月数よりも大きい値です。

または

day が 1 未満か、month の月の日数よりも大きい値です。

または

hour は 0 未満であるか、または 23 を超えています。

または

minute は 0 未満であるか、または 59 を超えています。

または

second は 0 未満であるか、または 59 を超えています。

または

millisecond は 0 未満であるか、または 999 を超えています。

Kind プロパティは Unspecified に初期化されます。

yearmonth、および day に使用できる値は calendar によって異なります。calendar を使用して、指定した日付と時刻を表現できない場合にだけ、例外がスローされます。

不適切なタイム ゾーンの取り扱いが重要なアプリケーションでは、対応する DateTimeOffset コンストラクターを使用できます。

System.Globalization 名前空間には、GregorianCalendarHebrewCalendarHijriCalendarJapaneseCalendar などの複数の暦が用意されています。

次の例では、DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) コンストラクターを呼び出し、HijriCalendar オブジェクトを使用して DateTime 値をインスタンス化します。すると、イスラム暦の DateTime が 2 つの方法で表示されます。現在のカルチャはイスラム暦をサポートしていない可能性があるため、HijriCalendar.GetMonthHijriCalendar.GetDayOfMonth、および HijriCalendar.GetYear の各メソッドを呼び出して、イスラム暦で日付を表示します。次に、この例では現在のカルチャをアラビア語 (シリア) に変更し、現在のカルチャの既定カレンダーをイスラム暦に変更します。イスラム暦が現在のカルチャの既定カレンダーになったため、String.Format メソッドから暗黙的に呼び出された ToString(String, IFormatProvider) メソッドでは、イスラム暦の形式で日付を表示します。1 つ前の現在のカルチャ (この場合は英語 (U.S.)) が復元されると、ToString(String, IFormatProvider) メソッドは現在のカルチャの既定のグレゴリオ暦を使用して日付の書式を設定します。


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

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

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

      // Restore previous culture.
      Thread.CurrentThread.CurrentCulture = dftCulture;
      dFormat = DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " H:mm:ss.fff";
      fmtString = "{0} culture using the {1} calendar: {2:" + dFormat + "}\n";
      outputBlock.Text += String.Format(fmtString,
                          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:
//       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


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: